from django.db import models from django.utils.translation import gettext_lazy as _ from core.utils.base_model import UUIDPrimaryKeyBaseModel from core.apps.banks.validators.banks import ( BankValidator, # used with BankModel.clean bic_validator, # validates bic name_validator, # validates bank name ) class BankModel(UUIDPrimaryKeyBaseModel): name = models.CharField( _("Name"), max_length=255, validators=[ name_validator, ], null=False, blank=False, unique=True, ) bic_code = models.CharField( _("BIC code"), validators=[ bic_validator, ], null=False, blank=False, unique=True, ) def __str__(self): return self.name @classmethod def _create_fake(cls): return cls.objects.create( name="Mock TBC Bank", bic_code="MOCKUZ22" ) def clean(self) -> None: super().clean() validator = BankValidator(self) validator() class Meta: # type: ignore db_table = "banks" verbose_name = _("Bank") verbose_name_plural = _("Banks") indexes = [ models.Index( fields=["bic_code"], name="banks_bic_code_inx" ), models.Index( fields=["name"], name="banks_name_inx" ), ]