This commit is contained in:
David Kennedy 2025-03-06 14:00:21 -05:00
parent 76bb219a2a
commit 7d2a37970f
No known key found for this signature in database
GPG key ID: 6528A5386E66B96B

View file

@ -78,10 +78,14 @@ logger = logging.getLogger(__name__)
class ImportExportRegistrarModelAdmin(ImportExportModelAdmin): class ImportExportRegistrarModelAdmin(ImportExportModelAdmin):
def has_import_permission(self, request): def has_import_permission(self, request):
return request.user.has_perm("registrar.analyst_access_permission") or request.user.has_perm("registrar.full_access_permission") return request.user.has_perm("registrar.analyst_access_permission") or request.user.has_perm(
"registrar.full_access_permission"
)
def has_export_permission(self, request): def has_export_permission(self, request):
return request.user.has_perm("registrar.analyst_access_permission") or request.user.has_perm("registrar.full_access_permission") return request.user.has_perm("registrar.analyst_access_permission") or request.user.has_perm(
"registrar.full_access_permission"
)
class FsmModelResource(resources.ModelResource): class FsmModelResource(resources.ModelResource):
@ -1618,14 +1622,18 @@ class DomainInvitationAdmin(BaseInvitationAdmin):
return queryset.annotate( return queryset.annotate(
converted_generic_org_type=Case( converted_generic_org_type=Case(
# When portfolio is present, use its value instead # When portfolio is present, use its value instead
When(domain__domain_info__portfolio__isnull=False, then=F("domain__domain_info__portfolio__organization_type")), When(
domain__domain_info__portfolio__isnull=False,
then=F("domain__domain_info__portfolio__organization_type"),
),
# Otherwise, return the natively assigned value # Otherwise, return the natively assigned value
default=F("domain__domain_info__generic_org_type"), default=F("domain__domain_info__generic_org_type"),
), ),
converted_federal_type=Case( converted_federal_type=Case(
# When portfolio is present, use its value instead # When portfolio is present, use its value instead
When( When(
Q(domain__domain_info__portfolio__isnull=False) & Q(domain__domain_info__portfolio__federal_agency__isnull=False), Q(domain__domain_info__portfolio__isnull=False)
& Q(domain__domain_info__portfolio__federal_agency__isnull=False),
then=F("domain__domain_info__portfolio__federal_agency__federal_type"), then=F("domain__domain_info__portfolio__federal_agency__federal_type"),
), ),
# Otherwise, return the natively assigned value # Otherwise, return the natively assigned value
@ -1653,8 +1661,10 @@ class DomainInvitationAdmin(BaseInvitationAdmin):
return True return True
if obj: if obj:
if request.user.groups.filter(name="omb_analysts_group").exists(): if request.user.groups.filter(name="omb_analysts_group").exists():
return obj.domain.domain_info.converted_generic_org_type == DomainRequest.OrganizationChoices.FEDERAL and \ return (
obj.domain.domain_info.federal_type == BranchChoices.EXECUTIVE obj.domain.domain_info.converted_generic_org_type == DomainRequest.OrganizationChoices.FEDERAL
and obj.domain.domain_info.federal_type == BranchChoices.EXECUTIVE
)
return super().has_view_permission(request, obj) return super().has_view_permission(request, obj)
# Select domain invitations to change -> Domain invitations # Select domain invitations to change -> Domain invitations
@ -3297,8 +3307,10 @@ class DomainRequestAdmin(ListHeaderAdmin, ImportExportRegistrarModelAdmin):
return True return True
if obj: if obj:
if request.user.groups.filter(name="omb_analysts_group").exists(): if request.user.groups.filter(name="omb_analysts_group").exists():
return obj.converted_generic_org_type == DomainRequest.OrganizationChoices.FEDERAL and \ return (
obj.converted_federal_type == BranchChoices.EXECUTIVE obj.converted_generic_org_type == DomainRequest.OrganizationChoices.FEDERAL
and obj.converted_federal_type == BranchChoices.EXECUTIVE
)
return super().has_view_permission(request, obj) return super().has_view_permission(request, obj)
def has_change_permission(self, request, obj=None): def has_change_permission(self, request, obj=None):
@ -3307,8 +3319,10 @@ class DomainRequestAdmin(ListHeaderAdmin, ImportExportRegistrarModelAdmin):
return True return True
if obj: if obj:
if request.user.groups.filter(name="omb_analysts_group").exists(): if request.user.groups.filter(name="omb_analysts_group").exists():
return obj.converted_generic_org_type == DomainRequest.OrganizationChoices.FEDERAL and \ return (
obj.converted_federal_type == BranchChoices.EXECUTIVE obj.converted_generic_org_type == DomainRequest.OrganizationChoices.FEDERAL
and obj.converted_federal_type == BranchChoices.EXECUTIVE
)
return super().has_change_permission(request, obj) return super().has_change_permission(request, obj)
def get_search_results(self, request, queryset, search_term): def get_search_results(self, request, queryset, search_term):
@ -3339,6 +3353,7 @@ class DomainRequestAdmin(ListHeaderAdmin, ImportExportRegistrarModelAdmin):
return form return form
class TransitionDomainAdmin(ListHeaderAdmin): class TransitionDomainAdmin(ListHeaderAdmin):
"""Custom transition domain admin class.""" """Custom transition domain admin class."""
@ -4198,8 +4213,10 @@ class DomainAdmin(ListHeaderAdmin, ImportExportRegistrarModelAdmin):
return True return True
if obj: if obj:
if request.user.groups.filter(name="omb_analysts_group").exists(): if request.user.groups.filter(name="omb_analysts_group").exists():
return obj.domain_info.converted_generic_org_type == DomainRequest.OrganizationChoices.FEDERAL and \ return (
obj.domain_info.converted_federal_type == BranchChoices.EXECUTIVE obj.domain_info.converted_generic_org_type == DomainRequest.OrganizationChoices.FEDERAL
and obj.domain_info.converted_federal_type == BranchChoices.EXECUTIVE
)
return super().has_view_permission(request, obj) return super().has_view_permission(request, obj)
def get_form(self, request, obj=None, **kwargs): def get_form(self, request, obj=None, **kwargs):
@ -4213,6 +4230,7 @@ class DomainAdmin(ListHeaderAdmin, ImportExportRegistrarModelAdmin):
return form return form
class DraftDomainResource(resources.ModelResource): class DraftDomainResource(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
import/export file""" import/export file"""
@ -4770,7 +4788,7 @@ class FederalAgencyAdmin(ListHeaderAdmin, ImportExportRegistrarModelAdmin):
readonly_fields = [] readonly_fields = []
# Read only that we'll leverage for CISA Analysts # Read only that we'll leverage for CISA Analysts
analyst_readonly_fields = [] analyst_readonly_fields = [] # type: ignore
# Read only that we'll leverage for OMB Analysts # Read only that we'll leverage for OMB Analysts
omb_analyst_readonly_fields = [ omb_analyst_readonly_fields = [
@ -4837,6 +4855,7 @@ class FederalAgencyAdmin(ListHeaderAdmin, ImportExportRegistrarModelAdmin):
readonly_fields.extend([field for field in self.analyst_readonly_fields]) readonly_fields.extend([field for field in self.analyst_readonly_fields])
return readonly_fields return readonly_fields
class UserGroupAdmin(AuditedAdmin): class UserGroupAdmin(AuditedAdmin):
"""Overwrite the generated UserGroup admin class""" """Overwrite the generated UserGroup admin class"""