mirror of
https://github.com/cisagov/manage.get.gov.git
synced 2025-08-20 08:24:05 +02:00
add info about roles / perms
This commit is contained in:
parent
b7f3f083fc
commit
174d217315
3 changed files with 36 additions and 13 deletions
|
@ -115,6 +115,33 @@ class UserPortfolioPermission(TimeStampedModel):
|
||||||
if additional_permissions:
|
if additional_permissions:
|
||||||
portfolio_permissions.update(additional_permissions)
|
portfolio_permissions.update(additional_permissions)
|
||||||
return list(portfolio_permissions)
|
return list(portfolio_permissions)
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def get_domain_request_permission_display(cls, roles, additional_permissions):
|
||||||
|
"""Class method to return a readable string for domain request permissions"""
|
||||||
|
# Tracks if they can view, create requests, or not do anything
|
||||||
|
all_permissions = UserPortfolioPermission.get_portfolio_permissions(roles, additional_permissions)
|
||||||
|
all_domain_perms = [UserPortfolioPermissionChoices.VIEW_ALL_REQUESTS, UserPortfolioPermissionChoices.EDIT_REQUESTS]
|
||||||
|
if (all(perm in all_permissions for perm in all_domain_perms)):
|
||||||
|
return "Viewer Requester"
|
||||||
|
elif (UserPortfolioPermissionChoices.VIEW_ALL_REQUESTS in all_permissions):
|
||||||
|
return "Viewer"
|
||||||
|
else:
|
||||||
|
return "None"
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def get_member_permission_display(cls, roles, additional_permissions):
|
||||||
|
"""Class method to return a readable string for member permissions"""
|
||||||
|
# Tracks if they can view, create requests, or not do anything
|
||||||
|
all_permissions = UserPortfolioPermission.get_portfolio_permissions(roles, additional_permissions)
|
||||||
|
# Note for reviewers: the reason why this isn't checking on "all" is because
|
||||||
|
# the way perms work for members is different than requests. We need to consolidate this.
|
||||||
|
if (UserPortfolioPermissionChoices.EDIT_MEMBERS in all_permissions):
|
||||||
|
return "Manager"
|
||||||
|
elif (UserPortfolioPermissionChoices.VIEW_MEMBERS in all_permissions):
|
||||||
|
return "Viewer"
|
||||||
|
else:
|
||||||
|
return "None"
|
||||||
|
|
||||||
def clean(self):
|
def clean(self):
|
||||||
"""Extends clean method to perform additional validation, which can raise errors in django admin."""
|
"""Extends clean method to perform additional validation, which can raise errors in django admin."""
|
||||||
|
|
|
@ -10,7 +10,6 @@ from registrar.models import (
|
||||||
DomainInformation,
|
DomainInformation,
|
||||||
PublicContact,
|
PublicContact,
|
||||||
UserDomainRole,
|
UserDomainRole,
|
||||||
PortfolioInvitation,
|
|
||||||
)
|
)
|
||||||
from django.db.models import Case, CharField, Count, DateField, F, ManyToManyField, Q, QuerySet, Value, When, TextField, OuterRef, Subquery
|
from django.db.models import Case, CharField, Count, DateField, F, ManyToManyField, Q, QuerySet, Value, When, TextField, OuterRef, Subquery
|
||||||
from django.db.models.functions import Cast
|
from django.db.models.functions import Cast
|
||||||
|
@ -20,7 +19,7 @@ from django.contrib.postgres.aggregates import StringAgg
|
||||||
from registrar.models.user_portfolio_permission import UserPortfolioPermission
|
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 ArrayRemove
|
from registrar.models.utility.orm_helper import ArrayRemove
|
||||||
from registrar.models.utility.portfolio_helper import UserPortfolioRoleChoices
|
from registrar.models.utility.portfolio_helper import UserPortfolioRoleChoices, UserPortfolioPermissionChoices
|
||||||
from registrar.templatetags.custom_filters import get_region
|
from registrar.templatetags.custom_filters import get_region
|
||||||
from registrar.utility.constants import BranchChoices
|
from registrar.utility.constants import BranchChoices
|
||||||
from registrar.utility.enums import DefaultEmail
|
from registrar.utility.enums import DefaultEmail
|
||||||
|
@ -197,24 +196,21 @@ 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")
|
||||||
is_admin = UserPortfolioRoleChoices.ORGANIZATION_ADMIN in (model.get("roles") or [])
|
additional_permissions = model.get("additional_permissions_display")
|
||||||
# Tracks if they can view, create requests, or not do anything
|
is_admin = UserPortfolioRoleChoices.ORGANIZATION_ADMIN in (roles or [])
|
||||||
x = model.get("roles")
|
domain_request_display = UserPortfolioPermission.get_domain_request_permission_display(roles, additional_permissions)
|
||||||
print(f"what are the roles? {x}")
|
member_perm_display = UserPortfolioPermission.get_member_permission_display(roles, additional_permissions)
|
||||||
domain_request_user_permission = None
|
|
||||||
|
|
||||||
user_managed_domains = model.get("domain_info", [])
|
user_managed_domains = model.get("domain_info", [])
|
||||||
managed_domains_as_csv = ",".join(user_managed_domains)
|
managed_domains_as_csv = ",".join(user_managed_domains)
|
||||||
# Whether they can make domain requests. Tentatively, I think the options as we currently understand would be: None, Viewer, Viewer Requester
|
|
||||||
FIELDS = {
|
FIELDS = {
|
||||||
"Email": model.get("email_display"),
|
"Email": model.get("email_display"),
|
||||||
"Organization admin": is_admin,
|
"Organization admin": is_admin,
|
||||||
"Invited by": model.get("invited_by"),
|
"Invited by": model.get("invited_by"),
|
||||||
"Invitation date": model.get("invitation_date"),
|
"Invitation date": model.get("invitation_date"),
|
||||||
"Last active": model.get("last_active"),
|
"Last active": model.get("last_active"),
|
||||||
"Domain requests": "TODO",
|
"Domain requests": domain_request_display,
|
||||||
"Member management": "TODO",
|
"Member management": member_perm_display,
|
||||||
"Domain management": "TODO",
|
"Domain management": "TODO",
|
||||||
"Number of domains": len(user_managed_domains),
|
"Number of domains": len(user_managed_domains),
|
||||||
# TODO - this doesn't quote enclose with one record
|
# TODO - this doesn't quote enclose with one record
|
||||||
|
|
|
@ -241,7 +241,7 @@ class UserPortfolioPermissionModelAnnotation(BaseModelAnnotation):
|
||||||
|
|
||||||
# Tweak the queries slightly to only return the data we need.
|
# Tweak the queries slightly to only return the data we need.
|
||||||
# When returning data for the csv report we:
|
# When returning data for the csv report we:
|
||||||
# 1. Only return the domain name for 'domain_info'
|
# 1. Only return the domain name for 'domain_info' rather than also add ':' seperated id
|
||||||
# 2. Return a formatted date for 'last_active'
|
# 2. Return a formatted date for 'last_active'
|
||||||
# These are just optimizations that are better done in SQL as opposed to python.
|
# These are just optimizations that are better done in SQL as opposed to python.
|
||||||
if csv_report:
|
if csv_report:
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue