undo some past changes

This commit is contained in:
zandercymatics 2024-11-25 16:00:20 -07:00
parent 958e010c5a
commit 2b5a5fe7ca
No known key found for this signature in database
GPG key ID: FF4636ABEC9682B7
2 changed files with 37 additions and 56 deletions

View file

@ -1,12 +1,19 @@
import csv
import logging
from abc import ABC, abstractmethod from abc import ABC, abstractmethod
from collections import defaultdict from collections import defaultdict
import csv
import logging
from datetime import datetime from datetime import datetime
from registrar.models import (
from django.contrib.admin.models import LogEntry, ADDITION Domain,
from django.contrib.contenttypes.models import ContentType DomainInvitation,
from django.contrib.postgres.aggregates import ArrayAgg, StringAgg DomainRequest,
DomainInformation,
PublicContact,
UserDomainRole,
PortfolioInvitation,
UserGroup,
UserPortfolioPermission,
)
from django.db.models import ( from django.db.models import (
Case, Case,
CharField, CharField,
@ -22,21 +29,13 @@ from django.db.models import (
OuterRef, OuterRef,
Subquery, Subquery,
Exists, Exists,
Func,
) )
from django.db.models.functions import Concat, Coalesce, Cast, Func
from django.utils import timezone from django.utils import timezone
from django.db.models.functions import Concat, Coalesce, Cast
from registrar.models import ( from django.contrib.postgres.aggregates import ArrayAgg, StringAgg
Domain, from django.contrib.admin.models import LogEntry, ADDITION
DomainInvitation, from django.contrib.contenttypes.models import ContentType
DomainRequest,
DomainInformation,
PublicContact,
UserDomainRole,
PortfolioInvitation,
UserGroup,
)
from registrar.models.user_portfolio_permission import UserPortfolioPermission
from registrar.models.utility.generic_helper import convert_queryset_to_dict from registrar.models.utility.generic_helper import convert_queryset_to_dict
from registrar.models.utility.orm_helper import ArrayRemoveNull from registrar.models.utility.orm_helper import ArrayRemoveNull
from registrar.models.utility.portfolio_helper import UserPortfolioRoleChoices from registrar.models.utility.portfolio_helper import UserPortfolioRoleChoices
@ -76,7 +75,7 @@ def format_end_date(end_date):
class BaseExport(ABC): class BaseExport(ABC):
""" """
A generic class for exporting data which returns a csv file for the given model. A generic class for exporting data which returns a csv file for the given model.
2nd class in an inheritance tree of 4. Base class in an inheritance tree of 3.
""" """
@classmethod @classmethod
@ -139,7 +138,7 @@ class BaseExport(ABC):
return Q() return Q()
@classmethod @classmethod
def get_annotated_fields(cls, **kwargs): def get_computed_fields(cls, **kwargs):
""" """
Get a dict of computed fields. These are fields that do not exist on the model normally Get a dict of computed fields. These are fields that do not exist on the model normally
and will be passed to .annotate() when building a queryset. and will be passed to .annotate() when building a queryset.
@ -244,7 +243,7 @@ class BaseExport(ABC):
exclusions = cls.get_exclusions() exclusions = cls.get_exclusions()
annotations_for_sort = cls.get_annotations_for_sort() annotations_for_sort = cls.get_annotations_for_sort()
filter_conditions = cls.get_filter_conditions(**kwargs) filter_conditions = cls.get_filter_conditions(**kwargs)
annotated_fields = cls.get_annotated_fields(**kwargs) annotated_fields = cls.get_computed_fields(**kwargs)
related_table_fields = cls.get_related_table_fields() related_table_fields = cls.get_related_table_fields()
model_queryset = ( model_queryset = (
@ -783,7 +782,7 @@ class DomainDataType(DomainExport):
return ["domain__permissions"] return ["domain__permissions"]
@classmethod @classmethod
def get_annotated_fields(cls, delimiter=", ", **kwargs): def get_computed_fields(cls, delimiter=", ", **kwargs):
""" """
Get a dict of computed fields. Get a dict of computed fields.
""" """
@ -1000,7 +999,7 @@ class DomainDataFull(DomainExport):
) )
@classmethod @classmethod
def get_annotated_fields(cls, delimiter=", ", **kwargs): def get_computed_fields(cls, delimiter=", ", **kwargs):
""" """
Get a dict of computed fields. Get a dict of computed fields.
""" """
@ -1095,7 +1094,7 @@ class DomainDataFederal(DomainExport):
) )
@classmethod @classmethod
def get_annotated_fields(cls, delimiter=", ", **kwargs): def get_computed_fields(cls, delimiter=", ", **kwargs):
""" """
Get a dict of computed fields. Get a dict of computed fields.
""" """
@ -1729,7 +1728,7 @@ class DomainRequestDataFull(DomainRequestExport):
] ]
@classmethod @classmethod
def get_annotated_fields(cls, delimiter=", ", **kwargs): def get_computed_fields(cls, delimiter=", ", **kwargs):
""" """
Get a dict of computed fields. Get a dict of computed fields.
""" """

View file

@ -1,32 +1,19 @@
from django.contrib.postgres.aggregates import ArrayAgg from django.http import JsonResponse
from django.core.paginator import Paginator from django.core.paginator import Paginator
from django.db.models import ( from django.db.models import Value, F, CharField, TextField, Q, Case, When, OuterRef, Subquery
Case,
CharField,
F,
Q,
TextField,
Value,
When,
OuterRef,
Subquery,
)
from django.db.models.expressions import Func from django.db.models.expressions import Func
from django.db.models.functions import Cast, Coalesce, Concat from django.db.models.functions import Cast, Coalesce, Concat
from django.http import JsonResponse from django.contrib.postgres.aggregates import ArrayAgg
from django.urls import reverse from django.urls import reverse
from django.views import View from django.views import View
from registrar.models import ( from registrar.models.domain_invitation import DomainInvitation
DomainInvitation, from registrar.models.portfolio_invitation import PortfolioInvitation
PortfolioInvitation, from registrar.models.user_portfolio_permission import UserPortfolioPermission
UserPortfolioPermission, from registrar.models.utility.portfolio_helper import UserPortfolioPermissionChoices, UserPortfolioRoleChoices
)
from registrar.models.utility.portfolio_helper import (
UserPortfolioPermissionChoices,
UserPortfolioRoleChoices,
)
from registrar.views.utility.mixins import PortfolioMembersPermission from registrar.views.utility.mixins import PortfolioMembersPermission
from registrar.models.utility.orm_helper import ArrayRemoveNull
class PortfolioMembersJson(PortfolioMembersPermission, View): class PortfolioMembersJson(PortfolioMembersPermission, View):
@ -53,7 +40,7 @@ class PortfolioMembersJson(PortfolioMembersPermission, View):
page_number = request.GET.get("page", 1) page_number = request.GET.get("page", 1)
page_obj = paginator.get_page(page_number) page_obj = paginator.get_page(page_number)
members = [self.serialize_members(portfolio, item, request.user) for item in page_obj.object_list] members = [self.serialize_members(request, portfolio, item, request.user) for item in page_obj.object_list]
return JsonResponse( return JsonResponse(
{ {
@ -148,7 +135,7 @@ class PortfolioMembersJson(PortfolioMembersPermission, View):
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
domain_info=ArrayRemove( domain_info=ArrayRemoveNull(
ArrayAgg( ArrayAgg(
Subquery(domain_invitations.values("domain_info")), Subquery(domain_invitations.values("domain_info")),
distinct=True, distinct=True,
@ -193,7 +180,7 @@ class PortfolioMembersJson(PortfolioMembersPermission, View):
queryset = queryset.order_by(sort_by) queryset = queryset.order_by(sort_by)
return queryset return queryset
def serialize_members(self, portfolio, item, user): def serialize_members(self, request, portfolio, item, user):
# Check if the user can edit other users # Check if the user can edit other users
user_can_edit_other_users = any( user_can_edit_other_users = any(
user.has_perm(perm) for perm in ["registrar.full_access_permission", "registrar.change_user"] user.has_perm(perm) for perm in ["registrar.full_access_permission", "registrar.change_user"]
@ -228,8 +215,3 @@ class PortfolioMembersJson(PortfolioMembersPermission, View):
} }
return member_json return member_json
# Custom Func to use array_remove to remove null values
class ArrayRemove(Func):
function = "array_remove"
template = "%(function)s(%(expressions)s, NULL)"