diff --git a/src/registrar/admin.py b/src/registrar/admin.py index fa132724a..8d53545cf 100644 --- a/src/registrar/admin.py +++ b/src/registrar/admin.py @@ -1333,14 +1333,14 @@ class DomainInformationAdmin(ListHeaderAdmin, ImportExportModelAdmin): # modify the fieldsets list so that it excludes any fields we want to remove # based on permissions (eg. superuser_only_fields) or other conditions. def get_fieldsets(self, request, obj=None): - fieldsets = super().get_fieldsets(request, obj) + fieldsets = self.fieldsets # Create a modified version of fieldsets to exclude certain fields if not request.user.has_perm("registrar.full_access_permission"): modified_fieldsets = [] for name, data in fieldsets: fields = data.get("fields", []) - fields = tuple(field for field in fields if field not in self.superuser_only_fields) + fields = tuple(field for field in fields if field not in DomainInformationAdmin.superuser_only_fields) modified_fieldsets.append((name, {"fields": fields})) return modified_fieldsets return fieldsets @@ -1990,13 +1990,7 @@ class DomainInformationInline(admin.StackedInline): template = "django/admin/includes/domain_info_inline_stacked.html" model = models.DomainInformation - fieldsets = copy.deepcopy(DomainInformationAdmin.fieldsets) - # remove .gov domain from fieldset - for index, (title, f) in enumerate(fieldsets): - if title == ".gov domain": - del fieldsets[index] - break - + fieldsets = DomainInformationAdmin.fieldsets readonly_fields = DomainInformationAdmin.readonly_fields analyst_readonly_fields = DomainInformationAdmin.analyst_readonly_fields @@ -2042,6 +2036,23 @@ class DomainInformationInline(admin.StackedInline): def get_readonly_fields(self, request, obj=None): return DomainInformationAdmin.get_readonly_fields(self, request, obj=None) + + # Re-route the get_fieldsets method to utilize DomainInformationAdmin.get_fieldsets + # since that has all the logic for excluding certain fields according to user permissions. + # Then modify the remaining fields to further trim out any we don't want for this inline + # form + def get_fieldsets(self, request, obj=None): + # Grab fieldsets from DomainInformationAdmin so that it handles all logic + # for permission-based field visibility. + modified_fieldsets = DomainInformationAdmin.get_fieldsets(self, request, obj=None) + + # remove .gov domain from fieldset + for index, (title, f) in enumerate(modified_fieldsets): + if title == ".gov domain": + del modified_fieldsets[index] + break + + return modified_fieldsets class DomainResource(FsmModelResource):