Source code for endoreg_db.models.administration.person.examiner.examiner

from django.db import models
from ..person import Person
from endoreg_db.utils import get_examiner_hash, create_mock_examiner_name
from typing import TYPE_CHECKING

from ....utils import DJANGO_NAME_SALT
if TYPE_CHECKING:
    from endoreg_db.models import administration
[docs] class Examiner(Person): center = models.ForeignKey( "Center", on_delete=models.CASCADE, blank=True, null=True ) hash = models.CharField(max_length=255, unique=True) if TYPE_CHECKING: center: "administration.Center" def __str__(self): return self.first_name + " " + self.last_name
[docs] @classmethod def custom_get_or_create(cls, first_name: str, last_name: str, center: "administration.Center", substitute_names: bool = True): from endoreg_db.models import ( FirstName, LastName, ) if isinstance(first_name, FirstName): first_name = str(first_name.name) if isinstance(last_name, LastName): last_name = str(last_name.name) real_hash = get_examiner_hash( first_name=first_name, last_name=last_name, center_name=center.name, salt=DJANGO_NAME_SALT, ) if substitute_names: name_tuple = create_mock_examiner_name() else: name_tuple = (first_name, last_name) defaults = dict( first_name=name_tuple[0], last_name=name_tuple[1], center=center, ) examiner, created = cls.objects.get_or_create(hash=real_hash, defaults=defaults) return examiner, created