Files
trustme/core/apps/contracts/models/contracts.py

74 lines
1.7 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
)
document = models.FileField(
_("Document"),
null=False,
blank=False,
max_length=2048,
)
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"
)
]