Code cleanup

This commit is contained in:
zandercymatics 2024-11-20 13:49:58 -07:00
parent 981cdb31b6
commit 3f8db08fb8
No known key found for this signature in database
GPG key ID: FF4636ABEC9682B7
3 changed files with 20 additions and 25 deletions

View file

@ -889,7 +889,8 @@ class MemberExportTest(MockDbForIndividualTests, MockEppLib):
"nonexistentmember_1@igorville.gov,False,help@get.gov,Unretrieved,Invited,None,Manager,False,0,\n" "nonexistentmember_1@igorville.gov,False,help@get.gov,Unretrieved,Invited,None,Manager,False,0,\n"
"nonexistentmember_2@igorville.gov,False,help@get.gov,Unretrieved,Invited,None,Viewer,False,0,\n" "nonexistentmember_2@igorville.gov,False,help@get.gov,Unretrieved,Invited,None,Viewer,False,0,\n"
"nonexistentmember_3@igorville.gov,False,help@get.gov,Unretrieved,Invited,Viewer,None,False,0,\n" "nonexistentmember_3@igorville.gov,False,help@get.gov,Unretrieved,Invited,Viewer,None,False,0,\n"
"nonexistentmember_4@igorville.gov,True,help@get.gov,Unretrieved,Invited,Viewer Requester,Manager,False,0,\n" "nonexistentmember_4@igorville.gov,True,help@get.gov,Unretrieved,"
"Invited,Viewer Requester,Manager,False,0,\n"
"nonexistentmember_5@igorville.gov,True,help@get.gov,Unretrieved,Invited,Viewer Requester,None,False,0,\n" "nonexistentmember_5@igorville.gov,True,help@get.gov,Unretrieved,Invited,Viewer Requester,None,False,0,\n"
) )
# Normalize line endings and remove commas, # Normalize line endings and remove commas,

View file

@ -146,6 +146,8 @@ class BaseExport(BaseModelAnnotation):
class MemberExport(BaseExport): class MemberExport(BaseExport):
"""CSV export for the MembersTable. The members table combines the content
of three tables: PortfolioInvitation, UserPortfolioPermission, and DomainInvitation."""
@classmethod @classmethod
def model(self): def model(self):
@ -185,8 +187,7 @@ class MemberExport(BaseExport):
invitations = PortfolioInvitationModelAnnotation.get_annotated_queryset(portfolio, csv_report=True).values( invitations = PortfolioInvitationModelAnnotation.get_annotated_queryset(portfolio, csv_report=True).values(
*shared_columns *shared_columns
) )
queryset_dict = convert_queryset_to_dict(permissions.union(invitations), is_model=False) return convert_queryset_to_dict(permissions.union(invitations), is_model=False)
return queryset_dict
@classmethod @classmethod
def get_columns(cls): def get_columns(cls):
@ -213,30 +214,23 @@ class MemberExport(BaseExport):
Given a set of columns and a model dictionary, generate a new row from cleaned column data. Given a set of columns and a model dictionary, generate a new row from cleaned column data.
Must be implemented by subclasses Must be implemented by subclasses
""" """
roles = model.get("roles") roles = model.get("roles", [])
additional_permissions = model.get("additional_permissions_display") permissions = model.get("additional_permissions_display")
is_admin = UserPortfolioRoleChoices.ORGANIZATION_ADMIN in (roles or [])
domain_request_display = UserPortfolioPermission.get_domain_request_permission_display(
roles, additional_permissions
)
member_perm_display = UserPortfolioPermission.get_member_permission_display(roles, additional_permissions)
user_managed_domains = model.get("domain_info", []) user_managed_domains = model.get("domain_info", [])
managed_domains_as_csv = ",".join(user_managed_domains) length_user_managed_domains = len(user_managed_domains)
FIELDS = { FIELDS = {
"Email": model.get("email_display"), "Email": model.get("email_display"),
"Organization admin": is_admin, "Organization admin": bool(UserPortfolioRoleChoices.ORGANIZATION_ADMIN in roles),
"Invited by": model.get("invited_by"), "Invited by": model.get("invited_by"),
"Joined date": model.get("joined_date"), "Joined date": model.get("joined_date"),
"Last active": model.get("last_active"), "Last active": model.get("last_active"),
"Domain requests": domain_request_display, "Domain requests": UserPortfolioPermission.get_domain_request_permission_display(roles, permissions),
"Member management": member_perm_display, "Member management": UserPortfolioPermission.get_member_permission_display(roles, permissions),
"Domain management": len(user_managed_domains) > 0, "Domain management": bool(length_user_managed_domains > 0),
"Number of domains": len(user_managed_domains), "Number of domains": length_user_managed_domains,
"Domains": managed_domains_as_csv, "Domains": ",".join(user_managed_domains),
} }
return [FIELDS.get(column, "") for column in columns]
row = [FIELDS.get(column, "") for column in columns]
return row
class DomainExport(BaseExport): class DomainExport(BaseExport):

View file

@ -256,7 +256,7 @@ class UserPortfolioPermissionModelAnnotation(BaseModelAnnotation):
portfolio=OuterRef(OuterRef("portfolio")), portfolio=OuterRef(OuterRef("portfolio")),
).values("id")[:1] ).values("id")[:1]
), ),
output_field=TextField(), output_field=CharField(),
) )
@classmethod @classmethod
@ -297,7 +297,7 @@ class UserPortfolioPermissionModelAnnotation(BaseModelAnnotation):
"last_active": Coalesce( "last_active": Coalesce(
last_active_query, last_active_query,
Value("Invalid date"), Value("Invalid date"),
output_field=TextField(), output_field=CharField(),
), ),
"additional_permissions_display": F("additional_permissions"), "additional_permissions_display": F("additional_permissions"),
"member_display": Case( "member_display": Case(
@ -324,7 +324,7 @@ class UserPortfolioPermissionModelAnnotation(BaseModelAnnotation):
& Q(user__permissions__domain__domain_info__portfolio=portfolio), & Q(user__permissions__domain__domain_info__portfolio=portfolio),
), ),
"type": Value("member", output_field=CharField()), "type": Value("member", output_field=CharField()),
"joined_date": Func(F("created_at"), Value("YYYY-MM-DD"), function="to_char", output_field=TextField()), "joined_date": Func(F("created_at"), Value("YYYY-MM-DD"), function="to_char", output_field=CharField()),
"invited_by": PortfolioInvitationModelAnnotation.get_invited_by_query( "invited_by": PortfolioInvitationModelAnnotation.get_invited_by_query(
object_id_query=cls.get_portfolio_invitation_id_query() object_id_query=cls.get_portfolio_invitation_id_query()
), ),
@ -426,7 +426,7 @@ class PortfolioInvitationModelAnnotation(BaseModelAnnotation):
"first_name": Value(None, output_field=CharField()), "first_name": Value(None, output_field=CharField()),
"last_name": Value(None, output_field=CharField()), "last_name": Value(None, output_field=CharField()),
"email_display": F("email"), "email_display": F("email"),
"last_active": Value("Invited", output_field=TextField()), "last_active": Value("Invited", output_field=CharField()),
"additional_permissions_display": F("additional_permissions"), "additional_permissions_display": F("additional_permissions"),
"member_display": F("email"), "member_display": F("email"),
# Use ArrayRemove to return an empty list when no domain invitations are found # Use ArrayRemove to return an empty list when no domain invitations are found
@ -438,7 +438,7 @@ class PortfolioInvitationModelAnnotation(BaseModelAnnotation):
), ),
"type": Value("invitedmember", output_field=CharField()), "type": Value("invitedmember", output_field=CharField()),
"joined_date": Value("Unretrieved", output_field=CharField()), "joined_date": Value("Unretrieved", output_field=CharField()),
"invited_by": cls.get_invited_by_query(object_id_query=Cast(OuterRef("id"), output_field=TextField())), "invited_by": cls.get_invited_by_query(object_id_query=Cast(OuterRef("id"), output_field=CharField())),
} }
@classmethod @classmethod