27 lines
761 B
Python
Executable File
27 lines
761 B
Python
Executable File
from django.utils.translation import gettext_lazy as _
|
|
|
|
from django.db import models
|
|
from django.db.models import F
|
|
|
|
from rules.contrib.models import RulesModel
|
|
from outbo.apps.core.models import TimestampableDeletableMixin, SoftDeletableManager
|
|
|
|
|
|
class ProjectNumberManager(SoftDeletableManager):
|
|
def get_next_number(self, prefix):
|
|
current = self.get_or_create(prefix=prefix)[0]
|
|
value = current.value
|
|
|
|
current.value = F("value") + 1
|
|
current.save()
|
|
|
|
return value
|
|
|
|
|
|
class ProjectNumber(TimestampableDeletableMixin, RulesModel):
|
|
objects = ProjectNumberManager()
|
|
all_objects = ProjectNumberManager(alive_only=False)
|
|
|
|
prefix = models.CharField(max_length=4)
|
|
value = models.PositiveIntegerField(default=1)
|