From a7273c8d498384901ed0e37f28d4bd9cf25d31f7 Mon Sep 17 00:00:00 2001 From: CocoByte Date: Thu, 20 Jun 2024 14:18:37 -0600 Subject: [PATCH] Added senior official model (still need to add migrations and foreign key in Portfolios) --- src/registrar/models/senior_official.py | 55 +++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 src/registrar/models/senior_official.py diff --git a/src/registrar/models/senior_official.py b/src/registrar/models/senior_official.py new file mode 100644 index 000000000..deb5c0f11 --- /dev/null +++ b/src/registrar/models/senior_official.py @@ -0,0 +1,55 @@ +from django.db import models + +from .utility.time_stamped_model import TimeStampedModel +from phonenumber_field.modelfields import PhoneNumberField # type: ignore + + +class SeniorOfficial(TimeStampedModel): + """ + Senior Official is a distinct Contact-like entity (NOT to be inherited + from Contacts) developed for the unique role these individuals have in + managing Portfolios. + """ + + class Meta: + """Contains meta information about this class""" + + # Placeholder for later tickets... + # indexes = [ + # models.Index(fields=["user"]), + # models.Index(fields=["email"]), + # ] + + + first_name = models.CharField( + null=True, + blank=True, + verbose_name="first name", + ) + last_name = models.CharField( + null=True, + blank=True, + verbose_name="last name", + ) + title = models.CharField( + null=True, + blank=True, + verbose_name="title / role", + ) + phone = PhoneNumberField( + null=True, + blank=True, + ) + + def get_formatted_name(self): + """Returns the contact's name in Western order.""" + names = [n for n in [self.first_name, self.last_name] if n] + return " ".join(names) if names else "Unknown" + + def __str__(self): + if self.first_name or self.last_name: + return self.get_formatted_name() + elif self.pk: + return str(self.pk) + else: + return ""