68 lines
1.5 KiB
Python
68 lines
1.5 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.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"
|
|
),
|
|
]
|
|
|