mirror of
https://github.com/cisagov/manage.get.gov.git
synced 2025-07-22 02:36:02 +02:00
formatted for code readability
This commit is contained in:
parent
08d878b427
commit
dbf208c2bb
8 changed files with 117 additions and 49 deletions
|
@ -338,7 +338,7 @@ urlpatterns = [
|
||||||
path("get-domains-json/", get_domains_json, name="get_domains_json"),
|
path("get-domains-json/", get_domains_json, name="get_domains_json"),
|
||||||
path("get-domain-requests-json/", get_domain_requests_json, name="get_domain_requests_json"),
|
path("get-domain-requests-json/", get_domain_requests_json, name="get_domain_requests_json"),
|
||||||
path("get-portfolio-members-json/", views.PortfolioMembersJson.as_view(), name="get_portfolio_members_json"),
|
path("get-portfolio-members-json/", views.PortfolioMembersJson.as_view(), name="get_portfolio_members_json"),
|
||||||
path('get-member-domains-json/', views.PortfolioMemberDomainsJson.as_view(), name="get_member_domains_json"),
|
path("get-member-domains-json/", views.PortfolioMemberDomainsJson.as_view(), name="get_member_domains_json"),
|
||||||
]
|
]
|
||||||
|
|
||||||
# Djangooidc strips out context data from that context, so we define a custom error
|
# Djangooidc strips out context data from that context, so we define a custom error
|
||||||
|
|
|
@ -83,8 +83,12 @@ class GetPortfolioMemberDomainsJsonTest(TestWithUser, WebTest):
|
||||||
UserPortfolioPermissionChoices.VIEW_MEMBERS,
|
UserPortfolioPermissionChoices.VIEW_MEMBERS,
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
DomainInvitation.objects.create(email=cls.invited_member_email, domain=cls.domain1, status=DomainInvitation.DomainInvitationStatus.INVITED)
|
DomainInvitation.objects.create(
|
||||||
DomainInvitation.objects.create(email=cls.invited_member_email, domain=cls.domain2, status=DomainInvitation.DomainInvitationStatus.INVITED)
|
email=cls.invited_member_email, domain=cls.domain1, status=DomainInvitation.DomainInvitationStatus.INVITED
|
||||||
|
)
|
||||||
|
DomainInvitation.objects.create(
|
||||||
|
email=cls.invited_member_email, domain=cls.domain2, status=DomainInvitation.DomainInvitationStatus.INVITED
|
||||||
|
)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def tearDownClass(cls):
|
def tearDownClass(cls):
|
||||||
|
@ -107,7 +111,10 @@ class GetPortfolioMemberDomainsJsonTest(TestWithUser, WebTest):
|
||||||
@override_flag("organization_members", active=True)
|
@override_flag("organization_members", active=True)
|
||||||
def test_get_portfolio_member_domains_json_authenticated(self):
|
def test_get_portfolio_member_domains_json_authenticated(self):
|
||||||
"""Test that portfolio member's domains are returned properly for an authenticated user."""
|
"""Test that portfolio member's domains are returned properly for an authenticated user."""
|
||||||
response = self.app.get(reverse("get_member_domains_json"), params={"portfolio": self.portfolio.id, "member_id": self.user_member.id, "member_only": "true"})
|
response = self.app.get(
|
||||||
|
reverse("get_member_domains_json"),
|
||||||
|
params={"portfolio": self.portfolio.id, "member_id": self.user_member.id, "member_only": "true"},
|
||||||
|
)
|
||||||
self.assertEqual(response.status_code, 200)
|
self.assertEqual(response.status_code, 200)
|
||||||
data = response.json
|
data = response.json
|
||||||
|
|
||||||
|
@ -127,7 +134,10 @@ class GetPortfolioMemberDomainsJsonTest(TestWithUser, WebTest):
|
||||||
@override_flag("organization_members", active=True)
|
@override_flag("organization_members", active=True)
|
||||||
def test_get_portfolio_invitedmember_domains_json_authenticated(self):
|
def test_get_portfolio_invitedmember_domains_json_authenticated(self):
|
||||||
"""Test that portfolio invitedmember's domains are returned properly for an authenticated user."""
|
"""Test that portfolio invitedmember's domains are returned properly for an authenticated user."""
|
||||||
response = self.app.get(reverse("get_member_domains_json"), params={"portfolio": self.portfolio.id, "email": self.invited_member_email, "member_only": "true"})
|
response = self.app.get(
|
||||||
|
reverse("get_member_domains_json"),
|
||||||
|
params={"portfolio": self.portfolio.id, "email": self.invited_member_email, "member_only": "true"},
|
||||||
|
)
|
||||||
self.assertEqual(response.status_code, 200)
|
self.assertEqual(response.status_code, 200)
|
||||||
data = response.json
|
data = response.json
|
||||||
|
|
||||||
|
@ -147,7 +157,10 @@ class GetPortfolioMemberDomainsJsonTest(TestWithUser, WebTest):
|
||||||
@override_flag("organization_members", active=True)
|
@override_flag("organization_members", active=True)
|
||||||
def test_get_portfolio_member_domains_json_authenticated_include_all_domains(self):
|
def test_get_portfolio_member_domains_json_authenticated_include_all_domains(self):
|
||||||
"""Test that all portfolio domains are returned properly for an authenticated user."""
|
"""Test that all portfolio domains are returned properly for an authenticated user."""
|
||||||
response = self.app.get(reverse("get_member_domains_json"), params={"portfolio": self.portfolio.id, "member_id": self.user_member.id, "member_only": "false"})
|
response = self.app.get(
|
||||||
|
reverse("get_member_domains_json"),
|
||||||
|
params={"portfolio": self.portfolio.id, "member_id": self.user_member.id, "member_only": "false"},
|
||||||
|
)
|
||||||
self.assertEqual(response.status_code, 200)
|
self.assertEqual(response.status_code, 200)
|
||||||
data = response.json
|
data = response.json
|
||||||
|
|
||||||
|
@ -167,7 +180,10 @@ class GetPortfolioMemberDomainsJsonTest(TestWithUser, WebTest):
|
||||||
@override_flag("organization_members", active=True)
|
@override_flag("organization_members", active=True)
|
||||||
def test_get_portfolio_invitedmember_domains_json_authenticated_include_all_domains(self):
|
def test_get_portfolio_invitedmember_domains_json_authenticated_include_all_domains(self):
|
||||||
"""Test that all portfolio domains are returned properly for an authenticated user."""
|
"""Test that all portfolio domains are returned properly for an authenticated user."""
|
||||||
response = self.app.get(reverse("get_member_domains_json"), params={"portfolio": self.portfolio.id, "email": self.invited_member_email, "member_only": "false"})
|
response = self.app.get(
|
||||||
|
reverse("get_member_domains_json"),
|
||||||
|
params={"portfolio": self.portfolio.id, "email": self.invited_member_email, "member_only": "false"},
|
||||||
|
)
|
||||||
self.assertEqual(response.status_code, 200)
|
self.assertEqual(response.status_code, 200)
|
||||||
data = response.json
|
data = response.json
|
||||||
|
|
||||||
|
@ -187,7 +203,15 @@ class GetPortfolioMemberDomainsJsonTest(TestWithUser, WebTest):
|
||||||
@override_flag("organization_members", active=True)
|
@override_flag("organization_members", active=True)
|
||||||
def test_get_portfolio_member_domains_json_authenticated_search(self):
|
def test_get_portfolio_member_domains_json_authenticated_search(self):
|
||||||
"""Test that search_term yields correct domain."""
|
"""Test that search_term yields correct domain."""
|
||||||
response = self.app.get(reverse("get_member_domains_json"), params={"portfolio": self.portfolio.id, "member_id": self.user_member.id, "member_only": "false", "search_term": "example1"})
|
response = self.app.get(
|
||||||
|
reverse("get_member_domains_json"),
|
||||||
|
params={
|
||||||
|
"portfolio": self.portfolio.id,
|
||||||
|
"member_id": self.user_member.id,
|
||||||
|
"member_only": "false",
|
||||||
|
"search_term": "example1",
|
||||||
|
},
|
||||||
|
)
|
||||||
self.assertEqual(response.status_code, 200)
|
self.assertEqual(response.status_code, 200)
|
||||||
data = response.json
|
data = response.json
|
||||||
|
|
||||||
|
@ -207,7 +231,15 @@ class GetPortfolioMemberDomainsJsonTest(TestWithUser, WebTest):
|
||||||
@override_flag("organization_members", active=True)
|
@override_flag("organization_members", active=True)
|
||||||
def test_get_portfolio_invitedmember_domains_json_authenticated_search(self):
|
def test_get_portfolio_invitedmember_domains_json_authenticated_search(self):
|
||||||
"""Test that search_term yields correct domain."""
|
"""Test that search_term yields correct domain."""
|
||||||
response = self.app.get(reverse("get_member_domains_json"), params={"portfolio": self.portfolio.id, "email": self.invited_member_email, "member_only": "false", "search_term": "example1"})
|
response = self.app.get(
|
||||||
|
reverse("get_member_domains_json"),
|
||||||
|
params={
|
||||||
|
"portfolio": self.portfolio.id,
|
||||||
|
"email": self.invited_member_email,
|
||||||
|
"member_only": "false",
|
||||||
|
"search_term": "example1",
|
||||||
|
},
|
||||||
|
)
|
||||||
self.assertEqual(response.status_code, 200)
|
self.assertEqual(response.status_code, 200)
|
||||||
data = response.json
|
data = response.json
|
||||||
|
|
||||||
|
@ -228,7 +260,16 @@ class GetPortfolioMemberDomainsJsonTest(TestWithUser, WebTest):
|
||||||
def test_get_portfolio_member_domains_json_authenticated_sort(self):
|
def test_get_portfolio_member_domains_json_authenticated_sort(self):
|
||||||
"""Test that sort returns results in correct order."""
|
"""Test that sort returns results in correct order."""
|
||||||
# Test by name in ascending order
|
# Test by name in ascending order
|
||||||
response = self.app.get(reverse("get_member_domains_json"), params={"portfolio": self.portfolio.id, "member_id": self.user_member.id, "member_only": "false", "sort_by": "name", "order":"asc"})
|
response = self.app.get(
|
||||||
|
reverse("get_member_domains_json"),
|
||||||
|
params={
|
||||||
|
"portfolio": self.portfolio.id,
|
||||||
|
"member_id": self.user_member.id,
|
||||||
|
"member_only": "false",
|
||||||
|
"sort_by": "name",
|
||||||
|
"order": "asc",
|
||||||
|
},
|
||||||
|
)
|
||||||
self.assertEqual(response.status_code, 200)
|
self.assertEqual(response.status_code, 200)
|
||||||
data = response.json
|
data = response.json
|
||||||
|
|
||||||
|
@ -247,7 +288,16 @@ class GetPortfolioMemberDomainsJsonTest(TestWithUser, WebTest):
|
||||||
self.assertEqual(data["domains"][0]["name"], "example1.com")
|
self.assertEqual(data["domains"][0]["name"], "example1.com")
|
||||||
|
|
||||||
# Test by name in descending order
|
# Test by name in descending order
|
||||||
response = self.app.get(reverse("get_member_domains_json"), params={"portfolio": self.portfolio.id, "member_id": self.user_member.id, "member_only": "false", "sort_by": "name", "order":"desc"})
|
response = self.app.get(
|
||||||
|
reverse("get_member_domains_json"),
|
||||||
|
params={
|
||||||
|
"portfolio": self.portfolio.id,
|
||||||
|
"member_id": self.user_member.id,
|
||||||
|
"member_only": "false",
|
||||||
|
"sort_by": "name",
|
||||||
|
"order": "desc",
|
||||||
|
},
|
||||||
|
)
|
||||||
self.assertEqual(response.status_code, 200)
|
self.assertEqual(response.status_code, 200)
|
||||||
data = response.json
|
data = response.json
|
||||||
|
|
||||||
|
@ -271,7 +321,16 @@ class GetPortfolioMemberDomainsJsonTest(TestWithUser, WebTest):
|
||||||
def test_get_portfolio_invitedmember_domains_json_authenticated_sort(self):
|
def test_get_portfolio_invitedmember_domains_json_authenticated_sort(self):
|
||||||
"""Test that sort returns results in correct order."""
|
"""Test that sort returns results in correct order."""
|
||||||
# Test by name in ascending order
|
# Test by name in ascending order
|
||||||
response = self.app.get(reverse("get_member_domains_json"), params={"portfolio": self.portfolio.id, "email": self.invited_member_email, "member_only": "false", "sort_by": "name", "order":"asc"})
|
response = self.app.get(
|
||||||
|
reverse("get_member_domains_json"),
|
||||||
|
params={
|
||||||
|
"portfolio": self.portfolio.id,
|
||||||
|
"email": self.invited_member_email,
|
||||||
|
"member_only": "false",
|
||||||
|
"sort_by": "name",
|
||||||
|
"order": "asc",
|
||||||
|
},
|
||||||
|
)
|
||||||
self.assertEqual(response.status_code, 200)
|
self.assertEqual(response.status_code, 200)
|
||||||
data = response.json
|
data = response.json
|
||||||
|
|
||||||
|
@ -290,7 +349,16 @@ class GetPortfolioMemberDomainsJsonTest(TestWithUser, WebTest):
|
||||||
self.assertEqual(data["domains"][0]["name"], "example1.com")
|
self.assertEqual(data["domains"][0]["name"], "example1.com")
|
||||||
|
|
||||||
# Test by name in descending order
|
# Test by name in descending order
|
||||||
response = self.app.get(reverse("get_member_domains_json"), params={"portfolio": self.portfolio.id, "email": self.invited_member_email, "member_only": "false", "sort_by": "name", "order":"desc"})
|
response = self.app.get(
|
||||||
|
reverse("get_member_domains_json"),
|
||||||
|
params={
|
||||||
|
"portfolio": self.portfolio.id,
|
||||||
|
"email": self.invited_member_email,
|
||||||
|
"member_only": "false",
|
||||||
|
"sort_by": "name",
|
||||||
|
"order": "desc",
|
||||||
|
},
|
||||||
|
)
|
||||||
self.assertEqual(response.status_code, 200)
|
self.assertEqual(response.status_code, 200)
|
||||||
data = response.json
|
data = response.json
|
||||||
|
|
||||||
|
@ -317,7 +385,11 @@ class GetPortfolioMemberDomainsJsonTest(TestWithUser, WebTest):
|
||||||
self.app.set_user(self.user_no_perms)
|
self.app.set_user(self.user_no_perms)
|
||||||
|
|
||||||
# Try to access the portfolio members without being authenticated
|
# Try to access the portfolio members without being authenticated
|
||||||
response = self.app.get(reverse("get_member_domains_json"), params={"portfolio": self.portfolio.id, "member_id": self.user_member.id, "member_only": "true"}, expect_errors=True)
|
response = self.app.get(
|
||||||
|
reverse("get_member_domains_json"),
|
||||||
|
params={"portfolio": self.portfolio.id, "member_id": self.user_member.id, "member_only": "true"},
|
||||||
|
expect_errors=True,
|
||||||
|
)
|
||||||
|
|
||||||
# Assert that the response is a 403
|
# Assert that the response is a 403
|
||||||
self.assertEqual(response.status_code, 403)
|
self.assertEqual(response.status_code, 403)
|
||||||
|
@ -331,7 +403,11 @@ class GetPortfolioMemberDomainsJsonTest(TestWithUser, WebTest):
|
||||||
self.app.set_user(None)
|
self.app.set_user(None)
|
||||||
|
|
||||||
# Try to access the portfolio members without being authenticated
|
# Try to access the portfolio members without being authenticated
|
||||||
response = self.app.get(reverse("get_member_domains_json"), params={"portfolio": self.portfolio.id, "member_id": self.user_member.id, "member_only": "true"}, expect_errors=True)
|
response = self.app.get(
|
||||||
|
reverse("get_member_domains_json"),
|
||||||
|
params={"portfolio": self.portfolio.id, "member_id": self.user_member.id, "member_only": "true"},
|
||||||
|
expect_errors=True,
|
||||||
|
)
|
||||||
|
|
||||||
# Assert that the response is a redirect to openid login
|
# Assert that the response is a redirect to openid login
|
||||||
self.assertEqual(response.status_code, 302)
|
self.assertEqual(response.status_code, 302)
|
||||||
|
|
|
@ -134,7 +134,9 @@ class GetPortfolioMembersJsonTest(TestWithUser, WebTest):
|
||||||
self.app.set_user(None)
|
self.app.set_user(None)
|
||||||
|
|
||||||
# Try to access the portfolio members without being authenticated
|
# Try to access the portfolio members without being authenticated
|
||||||
response = self.app.get(reverse("get_portfolio_members_json"), params={"portfolio": self.portfolio.id}, expect_errors=True)
|
response = self.app.get(
|
||||||
|
reverse("get_portfolio_members_json"), params={"portfolio": self.portfolio.id}, expect_errors=True
|
||||||
|
)
|
||||||
|
|
||||||
# Assert that the response is a redirect to the login page
|
# Assert that the response is a redirect to the login page
|
||||||
self.assertEqual(response.status_code, 302) # Redirect to openid login
|
self.assertEqual(response.status_code, 302) # Redirect to openid login
|
||||||
|
|
|
@ -1454,7 +1454,6 @@ class TestPortfolioMemberDomainsView(TestWithUser, WebTest):
|
||||||
|
|
||||||
response = self.client.get(reverse("member-domains", kwargs={"pk": self.permission.id}))
|
response = self.client.get(reverse("member-domains", kwargs={"pk": self.permission.id}))
|
||||||
|
|
||||||
|
|
||||||
# Make sure the page loaded, and that we're on the right page
|
# Make sure the page loaded, and that we're on the right page
|
||||||
self.assertEqual(response.status_code, 200)
|
self.assertEqual(response.status_code, 200)
|
||||||
self.assertContains(response, self.user_member.email)
|
self.assertContains(response, self.user_member.email)
|
||||||
|
@ -1493,7 +1492,6 @@ class TestPortfolioMemberDomainsView(TestWithUser, WebTest):
|
||||||
|
|
||||||
response = self.client.get(reverse("member-domains", kwargs={"pk": "0"}))
|
response = self.client.get(reverse("member-domains", kwargs={"pk": "0"}))
|
||||||
|
|
||||||
|
|
||||||
# Make sure the response is not found
|
# Make sure the response is not found
|
||||||
self.assertEqual(response.status_code, 404)
|
self.assertEqual(response.status_code, 404)
|
||||||
|
|
||||||
|
@ -1554,7 +1552,6 @@ class TestPortfolioInvitedMemberDomainsView(TestWithUser, WebTest):
|
||||||
|
|
||||||
response = self.client.get(reverse("invitedmember-domains", kwargs={"pk": self.invitation.id}))
|
response = self.client.get(reverse("invitedmember-domains", kwargs={"pk": self.invitation.id}))
|
||||||
|
|
||||||
|
|
||||||
# Make sure the page loaded, and that we're on the right page
|
# Make sure the page loaded, and that we're on the right page
|
||||||
self.assertEqual(response.status_code, 200)
|
self.assertEqual(response.status_code, 200)
|
||||||
self.assertContains(response, self.invited_member_email)
|
self.assertContains(response, self.invited_member_email)
|
||||||
|
@ -1593,7 +1590,5 @@ class TestPortfolioInvitedMemberDomainsView(TestWithUser, WebTest):
|
||||||
|
|
||||||
response = self.client.get(reverse("invitedmember-domains", kwargs={"pk": "0"}))
|
response = self.client.get(reverse("invitedmember-domains", kwargs={"pk": "0"}))
|
||||||
|
|
||||||
|
|
||||||
# Make sure the response is not found
|
# Make sure the response is not found
|
||||||
self.assertEqual(response.status_code, 404)
|
self.assertEqual(response.status_code, 404)
|
||||||
|
|
|
@ -4,7 +4,6 @@ from django.core.paginator import Paginator
|
||||||
from django.shortcuts import get_object_or_404
|
from django.shortcuts import get_object_or_404
|
||||||
from django.views import View
|
from django.views import View
|
||||||
from registrar.models import UserDomainRole, Domain, DomainInformation, User
|
from registrar.models import UserDomainRole, Domain, DomainInformation, User
|
||||||
from django.contrib.auth.decorators import login_required
|
|
||||||
from django.urls import reverse
|
from django.urls import reverse
|
||||||
from django.db.models import Q
|
from django.db.models import Q
|
||||||
|
|
||||||
|
@ -47,7 +46,6 @@ class PortfolioMemberDomainsJson(PortfolioMemberDomainsPermission, View):
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
def get_domain_ids_from_request(self, request):
|
def get_domain_ids_from_request(self, request):
|
||||||
"""Get domain ids from request.
|
"""Get domain ids from request.
|
||||||
|
|
||||||
|
@ -64,11 +62,15 @@ class PortfolioMemberDomainsJson(PortfolioMemberDomainsPermission, View):
|
||||||
if member_only:
|
if member_only:
|
||||||
if member_id:
|
if member_id:
|
||||||
member = get_object_or_404(User, pk=member_id)
|
member = get_object_or_404(User, pk=member_id)
|
||||||
domain_info_ids = DomainInformation.objects.filter(portfolio=portfolio).values_list("domain_id", flat=True)
|
domain_info_ids = DomainInformation.objects.filter(portfolio=portfolio).values_list(
|
||||||
|
"domain_id", flat=True
|
||||||
|
)
|
||||||
user_domain_roles = UserDomainRole.objects.filter(user=member).values_list("domain_id", flat=True)
|
user_domain_roles = UserDomainRole.objects.filter(user=member).values_list("domain_id", flat=True)
|
||||||
return domain_info_ids.intersection(user_domain_roles)
|
return domain_info_ids.intersection(user_domain_roles)
|
||||||
elif email:
|
elif email:
|
||||||
domain_info_ids = DomainInformation.objects.filter(portfolio=portfolio).values_list("domain_id", flat=True)
|
domain_info_ids = DomainInformation.objects.filter(portfolio=portfolio).values_list(
|
||||||
|
"domain_id", flat=True
|
||||||
|
)
|
||||||
domain_invitations = DomainInvitation.objects.filter(email=email).values_list("domain_id", flat=True)
|
domain_invitations = DomainInvitation.objects.filter(email=email).values_list("domain_id", flat=True)
|
||||||
return domain_info_ids.intersection(domain_invitations)
|
return domain_info_ids.intersection(domain_invitations)
|
||||||
else:
|
else:
|
||||||
|
@ -77,14 +79,12 @@ class PortfolioMemberDomainsJson(PortfolioMemberDomainsPermission, View):
|
||||||
logger.warning("Invalid search criteria, returning empty results list")
|
logger.warning("Invalid search criteria, returning empty results list")
|
||||||
return []
|
return []
|
||||||
|
|
||||||
|
|
||||||
def apply_search(self, queryset, request):
|
def apply_search(self, queryset, request):
|
||||||
search_term = request.GET.get("search_term")
|
search_term = request.GET.get("search_term")
|
||||||
if search_term:
|
if search_term:
|
||||||
queryset = queryset.filter(Q(name__icontains=search_term))
|
queryset = queryset.filter(Q(name__icontains=search_term))
|
||||||
return queryset
|
return queryset
|
||||||
|
|
||||||
|
|
||||||
def apply_sorting(self, queryset, request):
|
def apply_sorting(self, queryset, request):
|
||||||
sort_by = request.GET.get("sort_by", "name")
|
sort_by = request.GET.get("sort_by", "name")
|
||||||
order = request.GET.get("order", "asc")
|
order = request.GET.get("order", "asc")
|
||||||
|
@ -92,7 +92,6 @@ class PortfolioMemberDomainsJson(PortfolioMemberDomainsPermission, View):
|
||||||
sort_by = f"-{sort_by}"
|
sort_by = f"-{sort_by}"
|
||||||
return queryset.order_by(sort_by)
|
return queryset.order_by(sort_by)
|
||||||
|
|
||||||
|
|
||||||
def serialize_domain(self, domain, user):
|
def serialize_domain(self, domain, user):
|
||||||
suborganization_name = None
|
suborganization_name = None
|
||||||
try:
|
try:
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
from django.http import JsonResponse
|
from django.http import JsonResponse
|
||||||
from django.core.paginator import Paginator
|
from django.core.paginator import Paginator
|
||||||
from django.contrib.auth.decorators import login_required
|
|
||||||
from django.db.models import Value, F, CharField, TextField, Q, Case, When
|
from django.db.models import Value, F, CharField, TextField, Q, Case, When
|
||||||
from django.db.models.functions import Concat, Coalesce
|
from django.db.models.functions import Concat, Coalesce
|
||||||
from django.urls import reverse
|
from django.urls import reverse
|
||||||
|
@ -52,7 +51,6 @@ class PortfolioMembersJson(PortfolioMembersPermission, View):
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
def initial_permissions_search(self, portfolio):
|
def initial_permissions_search(self, portfolio):
|
||||||
"""Perform initial search for permissions before applying any filters."""
|
"""Perform initial search for permissions before applying any filters."""
|
||||||
permissions = UserPortfolioPermission.objects.filter(portfolio=portfolio)
|
permissions = UserPortfolioPermission.objects.filter(portfolio=portfolio)
|
||||||
|
@ -96,7 +94,6 @@ class PortfolioMembersJson(PortfolioMembersPermission, View):
|
||||||
)
|
)
|
||||||
return permissions
|
return permissions
|
||||||
|
|
||||||
|
|
||||||
def initial_invitations_search(self, portfolio):
|
def initial_invitations_search(self, portfolio):
|
||||||
"""Perform initial invitations search before applying any filters."""
|
"""Perform initial invitations search before applying any filters."""
|
||||||
invitations = PortfolioInvitation.objects.filter(portfolio=portfolio)
|
invitations = PortfolioInvitation.objects.filter(portfolio=portfolio)
|
||||||
|
@ -121,7 +118,6 @@ class PortfolioMembersJson(PortfolioMembersPermission, View):
|
||||||
)
|
)
|
||||||
return invitations
|
return invitations
|
||||||
|
|
||||||
|
|
||||||
def apply_search_term(self, queryset, request):
|
def apply_search_term(self, queryset, request):
|
||||||
"""Apply search term to the queryset."""
|
"""Apply search term to the queryset."""
|
||||||
search_term = request.GET.get("search_term", "").lower()
|
search_term = request.GET.get("search_term", "").lower()
|
||||||
|
@ -133,7 +129,6 @@ class PortfolioMembersJson(PortfolioMembersPermission, View):
|
||||||
)
|
)
|
||||||
return queryset
|
return queryset
|
||||||
|
|
||||||
|
|
||||||
def apply_sorting(self, queryset, request):
|
def apply_sorting(self, queryset, request):
|
||||||
"""Apply sorting to the queryset."""
|
"""Apply sorting to the queryset."""
|
||||||
sort_by = request.GET.get("sort_by", "id") # Default to 'id'
|
sort_by = request.GET.get("sort_by", "id") # Default to 'id'
|
||||||
|
@ -147,7 +142,6 @@ class PortfolioMembersJson(PortfolioMembersPermission, View):
|
||||||
queryset = queryset.order_by(sort_by)
|
queryset = queryset.order_by(sort_by)
|
||||||
return queryset
|
return queryset
|
||||||
|
|
||||||
|
|
||||||
def serialize_members(self, request, 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(
|
||||||
|
|
|
@ -137,6 +137,7 @@ class PortfolioMemberEditView(PortfolioMemberEditPermissionView, View):
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
class PortfolioMemberDomainsView(PortfolioMemberDomainsPermissionView, View):
|
class PortfolioMemberDomainsView(PortfolioMemberDomainsPermissionView, View):
|
||||||
|
|
||||||
template_name = "portfolio_member_domains.html"
|
template_name = "portfolio_member_domains.html"
|
||||||
|
@ -155,7 +156,6 @@ class PortfolioMemberDomainsView(PortfolioMemberDomainsPermissionView, View):
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class PortfolioInvitedMemberView(PortfolioMemberPermissionView, View):
|
class PortfolioInvitedMemberView(PortfolioMemberPermissionView, View):
|
||||||
|
|
||||||
template_name = "portfolio_member.html"
|
template_name = "portfolio_member.html"
|
||||||
|
@ -228,6 +228,7 @@ class PortfolioInvitedMemberEditView(PortfolioMemberEditPermissionView, View):
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
class PortfolioInvitedMemberDomainsView(PortfolioMemberDomainsPermissionView, View):
|
class PortfolioInvitedMemberDomainsView(PortfolioMemberDomainsPermissionView, View):
|
||||||
|
|
||||||
template_name = "portfolio_member_domains.html"
|
template_name = "portfolio_member_domains.html"
|
||||||
|
|
|
@ -278,6 +278,7 @@ class PortfolioMemberEditPermissionView(PortfolioMemberEditPermission, Portfolio
|
||||||
`template_name`.
|
`template_name`.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
|
||||||
class PortfolioMemberDomainsPermissionView(PortfolioMemberDomainsPermission, PortfolioBasePermissionView, abc.ABC):
|
class PortfolioMemberDomainsPermissionView(PortfolioMemberDomainsPermission, PortfolioBasePermissionView, abc.ABC):
|
||||||
"""Abstract base view for portfolio member domains views that enforces permissions.
|
"""Abstract base view for portfolio member domains views that enforces permissions.
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue