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" ) ]