71 lines
1.6 KiB
Python
71 lines
1.6 KiB
Python
from django.db import models
|
|
from django.utils.translation import gettext_lazy as _
|
|
|
|
from core.utils.base_model import UUIDPrimaryKeyBaseModel
|
|
from core.apps.contracts.validators.contracts import (
|
|
ContractValidator,
|
|
name_validator
|
|
)
|
|
|
|
|
|
class ContractModel(UUIDPrimaryKeyBaseModel):
|
|
|
|
name = models.CharField(
|
|
_("name"),
|
|
validators=[
|
|
name_validator,
|
|
],
|
|
max_length=255
|
|
)
|
|
|
|
identifier = models.CharField(
|
|
_("Identifier"),
|
|
null=False,
|
|
blank=False
|
|
)
|
|
|
|
allow_add_files = models.BooleanField(default=False)
|
|
allow_delete_files = models.BooleanField(default=False)
|
|
|
|
@property
|
|
def file_permissions(self) -> str:
|
|
permissions: list[str] = []
|
|
|
|
if self.allow_add_files:
|
|
permissions.append("add")
|
|
if self.allow_delete_files:
|
|
permissions.append("delete")
|
|
|
|
if len(permissions) == 2:
|
|
return "All"
|
|
|
|
return ", ".join(permission.capitalize() for permission in permissions)
|
|
|
|
def __str__(self):
|
|
return self.name
|
|
|
|
@classmethod
|
|
def _create_fake(cls):
|
|
return cls.objects.create(
|
|
name="mock",
|
|
)
|
|
|
|
def clean(self) -> None:
|
|
super().clean()
|
|
|
|
validator = ContractValidator(self)
|
|
validator()
|
|
|
|
class Meta: # type: ignore
|
|
db_table = "contracts"
|
|
|
|
verbose_name = _("Contract")
|
|
verbose_name_plural = _("Contracts")
|
|
|
|
indexes = [
|
|
models.Index(
|
|
fields=["name"],
|
|
name="contracts_name_inx"
|
|
)
|
|
]
|