Added Senior Official foreign key in Portfolio, along with model field updates (for required fields), and admin.py updates

This commit is contained in:
CocoByte 2024-06-20 15:15:31 -06:00
parent a7273c8d49
commit 625d0e6f1f
No known key found for this signature in database
GPG key ID: BBFAA2526384C97F
4 changed files with 41 additions and 6 deletions

View file

@ -1016,6 +1016,29 @@ class ContactAdmin(ListHeaderAdmin, ImportExportModelAdmin):
# Get the filtered values # Get the filtered values
return super().changelist_view(request, extra_context=extra_context) return super().changelist_view(request, extra_context=extra_context)
class SeniorOfficialAdmin(ListHeaderAdmin, ImportExportModelAdmin):
"""Custom Senior Official Admin class."""
# NOTE: these are just placeholders. Not part of ACs (haven't been defined yet). Update in future tickets.
search_fields = ["first_name", "last_name"]
search_help_text = "Search by first name or last name."
list_display = [
"last_name",
]
# this ordering effects the ordering of results
# in autocomplete_fields for user
ordering = ["first_name", "last_name"]
fieldsets = [
(
None,
{"fields": ["first_name", "last_name", "title", "phone"]},
)
]
class WebsiteResource(resources.ModelResource): class WebsiteResource(resources.ModelResource):
"""defines how each field in the referenced model should be mapped to the corresponding fields in the """defines how each field in the referenced model should be mapped to the corresponding fields in the
@ -1025,6 +1048,7 @@ class WebsiteResource(resources.ModelResource):
model = models.Website model = models.Website
class WebsiteAdmin(ListHeaderAdmin, ImportExportModelAdmin): class WebsiteAdmin(ListHeaderAdmin, ImportExportModelAdmin):
"""Custom website admin class.""" """Custom website admin class."""
@ -2679,6 +2703,7 @@ admin.site.register(models.DomainRequest, DomainRequestAdmin)
admin.site.register(models.TransitionDomain, TransitionDomainAdmin) admin.site.register(models.TransitionDomain, TransitionDomainAdmin)
admin.site.register(models.VerifiedByStaff, VerifiedByStaffAdmin) admin.site.register(models.VerifiedByStaff, VerifiedByStaffAdmin)
admin.site.register(models.Portfolio, PortfolioAdmin) admin.site.register(models.Portfolio, PortfolioAdmin)
admin.site.register(models.SeniorOfficial, SeniorOfficialAdmin)
# Register our custom waffle implementations # Register our custom waffle implementations
admin.site.register(models.WaffleFlag, WaffleFlagAdmin) admin.site.register(models.WaffleFlag, WaffleFlagAdmin)

View file

@ -17,6 +17,7 @@ from .transition_domain import TransitionDomain
from .verified_by_staff import VerifiedByStaff from .verified_by_staff import VerifiedByStaff
from .waffle_flag import WaffleFlag from .waffle_flag import WaffleFlag
from .portfolio import Portfolio from .portfolio import Portfolio
from .senior_official import SeniorOfficial
__all__ = [ __all__ = [
@ -38,6 +39,7 @@ __all__ = [
"VerifiedByStaff", "VerifiedByStaff",
"WaffleFlag", "WaffleFlag",
"Portfolio", "Portfolio",
"SeniorOfficial",
] ]
auditlog.register(Contact) auditlog.register(Contact)

View file

@ -38,6 +38,14 @@ class Portfolio(TimeStampedModel):
default=FederalAgency.get_non_federal_agency, default=FederalAgency.get_non_federal_agency,
) )
senior_official = models.ForeignKey(
"registrar.SeniorOfficial",
on_delete=models.PROTECT,
help_text="Associated senior official",
unique=False,
default=FederalAgency.get_non_federal_agency,
)
organization_type = models.CharField( organization_type = models.CharField(
max_length=255, max_length=255,
choices=OrganizationChoices.choices, choices=OrganizationChoices.choices,

View file

@ -22,18 +22,18 @@ class SeniorOfficial(TimeStampedModel):
first_name = models.CharField( first_name = models.CharField(
null=True, null=False,
blank=True, blank=False,
verbose_name="first name", verbose_name="first name",
) )
last_name = models.CharField( last_name = models.CharField(
null=True, null=False,
blank=True, blank=False,
verbose_name="last name", verbose_name="last name",
) )
title = models.CharField( title = models.CharField(
null=True, null=False,
blank=True, blank=False,
verbose_name="title / role", verbose_name="title / role",
) )
phone = PhoneNumberField( phone = PhoneNumberField(