diff --git a/src/registrar/admin.py b/src/registrar/admin.py index afe23c86d..c58cd9702 100644 --- a/src/registrar/admin.py +++ b/src/registrar/admin.py @@ -2892,7 +2892,7 @@ class PortfolioAdmin(ListHeaderAdmin): """Returns a comma seperated list of links for each related suborg""" queryset = obj.get_suborganizations() sep = '
' - return self.get_links_csv(queryset, "suborganization", seperator=sep) + return self.get_field_links_as_csv(queryset, "suborganization", seperator=sep) suborganizations.short_description = "Suborganizations" @@ -2900,7 +2900,7 @@ class PortfolioAdmin(ListHeaderAdmin): """Returns a comma seperated list of links for each related domain""" queryset = obj.get_domains() sep = '' - return self.get_links_csv(queryset, "domaininformation", seperator=sep) + return self.get_field_links_as_csv(queryset, "domaininformation", seperator=sep) domains.short_description = "Domains" @@ -2908,24 +2908,10 @@ class PortfolioAdmin(ListHeaderAdmin): """Returns a comma seperated list of links for each related domain request""" queryset = obj.get_domain_requests() sep = '' - return self.get_links_csv(queryset, "domainrequest", seperator=sep) + return self.get_field_links_as_csv(queryset, "domainrequest", seperator=sep) domain_requests.short_description = "Domain requests" - def administrators(self, obj: models.Portfolio): - """Returns a comma seperated list of links for each related administrator""" - queryset = obj.get_administrators() - return self.get_links_csv(queryset, "user", "get_full_name") - - administrators.short_description = "Administrators" - - def members(self, obj: models.Portfolio): - """Returns a comma seperated list of links for each related member""" - queryset = obj.get_members() - return self.get_links_csv(queryset, "user", "get_full_name") - - members.short_description = "Members" - # Creates select2 fields (with search bars) autocomplete_fields = [ "creator", @@ -2933,9 +2919,23 @@ class PortfolioAdmin(ListHeaderAdmin): ] # Q for reviewers: What should this be called? - def get_links_csv(self, queryset, model_name, link_text_attribute=None, seperator=", "): + def get_field_links_as_csv(self, queryset, model_name, link_text_attribute=None, seperator=", "): + """ + Generate HTML links for items in a queryset, using a specified attribute for link text. + + Args: + queryset: The queryset of items to generate links for. + model_name: The model name used to construct the admin change URL. + link_text_attribute: The attribute or method name to use for link text. If None, the item itself is used. + separator: The separator to use between links in the resulting HTML. + + Returns: + A formatted HTML string with links to the admin change pages for each item. + """ links = [] for item in queryset: + + # This allows you to pass in link_text_attribute="get_full_name" for instance. if link_text_attribute: item_display_value = getattr(item, link_text_attribute) if callable(item_display_value): diff --git a/src/registrar/models/portfolio.py b/src/registrar/models/portfolio.py index 77df3be31..bf7ce9601 100644 --- a/src/registrar/models/portfolio.py +++ b/src/registrar/models/portfolio.py @@ -142,32 +142,3 @@ class Portfolio(TimeStampedModel): def get_suborganizations(self): """Returns all suborganizations associated with this portfolio""" return self.portfolio_suborganizations.all() - - # == Getters for users == # - def get_users(self): - """Returns all users associated with this portfolio""" - return self.portfolio_users.all() - - def get_administrators(self): - """Returns all administrators associated with this portfolio""" - return self.portfolio_users.filter( - portfolio_roles__overlap=[ - UserPortfolioRoleChoices.ORGANIZATION_ADMIN, - ] - ) - - def get_readonly_administrators(self): - """Returns all readonly_administrators associated with this portfolio""" - return self.portfolio_users.filter( - portfolio_roles__overlap=[ - UserPortfolioRoleChoices.ORGANIZATION_ADMIN_READ_ONLY, - ] - ) - - def get_members(self): - """Returns all members associated with this portfolio""" - return self.portfolio_users.filter( - portfolio_roles__overlap=[ - UserPortfolioRoleChoices.ORGANIZATION_MEMBER, - ] - ) diff --git a/src/registrar/templates/django/admin/includes/portfolio_fieldset.html b/src/registrar/templates/django/admin/includes/portfolio_fieldset.html deleted file mode 100644 index 4a0df2c34..000000000 --- a/src/registrar/templates/django/admin/includes/portfolio_fieldset.html +++ /dev/null @@ -1,13 +0,0 @@ -{% extends "django/admin/includes/email_clipboard_fieldset.html" %} -{% load custom_filters %} -{% load static url_helpers %} - -{% block field_readonly %} - {% if field.field.name == "members" %} - {% comment %} Do nothing - for now {% endcomment %} -