Skip to main content

NamingCounter

Counter storage for naming series.

Stores the current counter value for each prefix, enabling
persistent and queryable counter management.

Example:
# Counter for INV-2026- prefix
counter = NamingCounter(prefix="INV-2026-", current=42)

# Next invoice will be INV-2026-0043

Note:
Uses optimistic updates - no SELECT FOR UPDATE needed.
On conflict, retry with incremented value.

Source: naming_counter.py

Fields

FieldTypeRequiredDescriptionValidators
prefixstrNaming series prefix-
currentintCurrent counter value-

Configuration

SettingValue
SubmittableFalse
Track ChangesTrue

Controller

Controller hooks are implemented in *_controller.py files. Available lifecycle hooks:

  • validate() - Called before save, raise exceptions for validation errors
  • before_insert() - Called before inserting a new document
  • after_insert() - Called after successfully inserting
  • before_save() - Called before saving (insert or update)
  • after_save() - Called after saving
  • before_delete() - Called before deleting
  • after_delete() - Called after deleting