initial commit
This commit is contained in:
68
core/apps/companies/models/folders.py
Normal file
68
core/apps/companies/models/folders.py
Normal file
@@ -0,0 +1,68 @@
|
||||
from django.db import models
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
|
||||
from django.core.validators import (
|
||||
MaxLengthValidator,
|
||||
MinLengthValidator,
|
||||
)
|
||||
|
||||
from core.utils.base_model import UUIDPrimaryKeyBaseModel
|
||||
from core.apps.companies.models.companies import CompanyModel
|
||||
from core.apps.companies.validators.folders import (
|
||||
CompanyFolderValidator
|
||||
)
|
||||
|
||||
from core.apps.contracts.models import ContractModel
|
||||
|
||||
|
||||
class CompanyFolderModel(UUIDPrimaryKeyBaseModel):
|
||||
name = models.CharField(
|
||||
_("name"),
|
||||
max_length=150,
|
||||
validators=[
|
||||
MaxLengthValidator(150),
|
||||
MinLengthValidator(3),
|
||||
]
|
||||
)
|
||||
|
||||
company = models.ForeignKey(
|
||||
CompanyModel,
|
||||
on_delete=models.PROTECT,
|
||||
related_name="folders",
|
||||
null=False,
|
||||
blank=False
|
||||
)
|
||||
|
||||
contracts = models.ManyToManyField( # type: ignore
|
||||
ContractModel,
|
||||
verbose_name=_("Contracts"),
|
||||
related_name="folders",
|
||||
)
|
||||
|
||||
def __str__(self):
|
||||
return f"{self.name} {self.company!s}"
|
||||
|
||||
@classmethod
|
||||
def _create_fake(cls):
|
||||
return cls.objects.create(
|
||||
name="mock",
|
||||
company=CompanyModel._create_fake() # type: ignore
|
||||
)
|
||||
|
||||
def clean(self) -> None:
|
||||
super().clean()
|
||||
validator = CompanyFolderValidator(self)
|
||||
validator()
|
||||
|
||||
class Meta: # type: ignore
|
||||
db_table = "company_folders"
|
||||
|
||||
verbose_name = _("Company Folder")
|
||||
verbose_name_plural = _("Company Folders")
|
||||
|
||||
constraints = [
|
||||
models.UniqueConstraint(
|
||||
fields=["name", "company"],
|
||||
name="company_folders_name_company_unique_constraint"
|
||||
)
|
||||
]
|
||||
Reference in New Issue
Block a user