Skip to content

Commit 646df9c

Browse files
committed
move 10 group/member helper queries to Pro
After slices 1-6 the OS classic UI no longer renders RBAC member or group panels on view_product_details, view_product_type, or view_user. Pro template overrides still render those panels via context vars OS views were populating (members, global_members, groups, global_groups, product_members, product_type_members, global_product_members, product_groups, product_type_groups, global_product_groups). Move the underlying queries to Pro and drop the OS-side context entirely. dojo/product/queries.py: drop get_authorized_members_for_product, get_authorized_global_members_for_product, get_authorized_groups_for_product, get_authorized_global_groups_for_product, and get_authorized_product_members_for_user. dojo/product_type/queries.py: drop the matching four product-type helpers plus get_authorized_product_type_members_for_user. dojo/product/views.py:view_product, dojo/product_type/views.py: view_product_type, dojo/user/views.py:view_user: stop computing the six-or-so RBAC context vars and stop importing the helpers. edit_product_type also drops a stale `members` context var that no template referenced. The remaining helpers in OS (get_authorized_products, get_authorized_product_types, get_authorized_product_members, get_authorized_product_type_members, get_authorized_product_groups, get_authorized_product_type_groups) stay because they are core RBAC infrastructure or back V3 ViewSets (AssetGroupViewSet, OrganizationGroupViewSet) that are still in OS. Pro side moves to a separate commit: pro/{product,product_type}/ queries.py + pro/templatetags/rbac_tags.py with simple_tag wrappers, and Pro template overrides switch to {% pro_product_members %} etc.
1 parent 9233e1c commit 646df9c

5 files changed

Lines changed: 1 addition & 115 deletions

File tree

dojo/product/queries.py

Lines changed: 0 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -34,48 +34,13 @@ def get_authorized_products(permission, user=None):
3434
return Product.objects.all().order_by("name")
3535

3636

37-
def get_authorized_members_for_product(product, permission):
38-
impl = get_auth_filter("product.get_authorized_members_for_product")
39-
if impl:
40-
return impl(product, permission)
41-
return Product_Member.objects.filter(product=product).order_by("user__first_name", "user__last_name").select_related("role", "user")
42-
43-
44-
def get_authorized_global_members_for_product(product, permission):
45-
impl = get_auth_filter("product.get_authorized_global_members_for_product")
46-
if impl:
47-
return impl(product, permission)
48-
return Global_Role.objects.filter(group=None, role__isnull=False).order_by("user__first_name", "user__last_name").select_related("role", "user")
49-
50-
51-
def get_authorized_groups_for_product(product, permission):
52-
impl = get_auth_filter("product.get_authorized_groups_for_product")
53-
if impl:
54-
return impl(product, permission)
55-
return Product_Group.objects.filter(product=product).order_by("group__name").select_related("role")
56-
57-
58-
def get_authorized_global_groups_for_product(product, permission):
59-
impl = get_auth_filter("product.get_authorized_global_groups_for_product")
60-
if impl:
61-
return impl(product, permission)
62-
return Global_Role.objects.filter(user=None, role__isnull=False).order_by("group__name").select_related("role")
63-
64-
6537
def get_authorized_product_members(permission):
6638
impl = get_auth_filter("product.get_authorized_product_members")
6739
if impl:
6840
return impl(permission)
6941
return Product_Member.objects.all().order_by("id").select_related("role")
7042

7143

72-
def get_authorized_product_members_for_user(user, permission):
73-
impl = get_auth_filter("product.get_authorized_product_members_for_user")
74-
if impl:
75-
return impl(user, permission)
76-
return Product_Member.objects.filter(user=user).select_related("role", "product")
77-
78-
7944
def get_authorized_product_groups(permission):
8045
impl = get_auth_filter("product.get_authorized_product_groups")
8146
if impl:

dojo/product/views.py

Lines changed: 0 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -96,15 +96,9 @@
9696
Test_Type,
9797
)
9898
from dojo.product.queries import (
99-
get_authorized_global_groups_for_product,
100-
get_authorized_global_members_for_product,
101-
get_authorized_groups_for_product,
102-
get_authorized_members_for_product,
10399
get_authorized_products,
104100
)
105101
from dojo.product_type.queries import (
106-
get_authorized_groups_for_product_type,
107-
get_authorized_members_for_product_type,
108102
get_authorized_product_types,
109103
)
110104
from dojo.query_utils import build_count_subquery
@@ -252,14 +246,6 @@ def view_product(request, pid):
252246
.prefetch_related("prod_type__members")
253247
prod = get_object_or_404(prod_query, id=pid)
254248
authorized_users = prod.authorized_users.order_by("first_name", "last_name", "username")
255-
# kept for Pro template override `{% block rbac_members_panel %}` /
256-
# `{% block rbac_groups_panel %}` at pro/templates/dojo/view_product_details.html
257-
product_members = get_authorized_members_for_product(prod, "view")
258-
global_product_members = get_authorized_global_members_for_product(prod, "view")
259-
product_type_members = get_authorized_members_for_product_type(prod.prod_type, "view")
260-
product_groups = get_authorized_groups_for_product(prod, "view")
261-
global_product_groups = get_authorized_global_groups_for_product(prod, "view")
262-
product_type_groups = get_authorized_groups_for_product_type(prod.prod_type, "view")
263249
personal_notifications_form = ProductNotificationsForm(
264250
instance=Notifications.objects.filter(user=request.user).filter(product=prod).first())
265251
langSummary = Languages.objects.filter(product=prod).aggregate(Sum("files"), Sum("code"), Count("files"))
@@ -336,12 +322,6 @@ def view_product(request, pid):
336322
"benchmarks": benchmarks,
337323
"benchmark_type": product_tab.benchmark_type,
338324
"authorized_users": authorized_users,
339-
"product_members": product_members,
340-
"global_product_members": global_product_members,
341-
"product_type_members": product_type_members,
342-
"product_groups": product_groups,
343-
"global_product_groups": global_product_groups,
344-
"product_type_groups": product_type_groups,
345325
"personal_notifications_form": personal_notifications_form,
346326
"enabled_notifications": get_enabled_notifications_list(),
347327
"sla": sla})

dojo/product_type/queries.py

Lines changed: 0 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -23,48 +23,13 @@ def get_authorized_product_types(permission):
2323
return Product_Type.objects.all().order_by("name")
2424

2525

26-
def get_authorized_members_for_product_type(product_type, permission):
27-
impl = get_auth_filter("product_type.get_authorized_members_for_product_type")
28-
if impl:
29-
return impl(product_type, permission)
30-
return Product_Type_Member.objects.filter(product_type=product_type).order_by("user__first_name", "user__last_name").select_related("role", "product_type", "user")
31-
32-
33-
def get_authorized_global_members_for_product_type(product_type, permission):
34-
impl = get_auth_filter("product_type.get_authorized_global_members_for_product_type")
35-
if impl:
36-
return impl(product_type, permission)
37-
return Global_Role.objects.filter(group=None, role__isnull=False).order_by("user__first_name", "user__last_name").select_related("role", "user")
38-
39-
40-
def get_authorized_groups_for_product_type(product_type, permission):
41-
impl = get_auth_filter("product_type.get_authorized_groups_for_product_type")
42-
if impl:
43-
return impl(product_type, permission)
44-
return Product_Type_Group.objects.filter(product_type=product_type).order_by("group__name").select_related("role", "group")
45-
46-
47-
def get_authorized_global_groups_for_product_type(product_type, permission):
48-
impl = get_auth_filter("product_type.get_authorized_global_groups_for_product_type")
49-
if impl:
50-
return impl(product_type, permission)
51-
return Global_Role.objects.filter(user=None, role__isnull=False).order_by("group__name").select_related("role", "group")
52-
53-
5426
def get_authorized_product_type_members(permission):
5527
impl = get_auth_filter("product_type.get_authorized_product_type_members")
5628
if impl:
5729
return impl(permission)
5830
return Product_Type_Member.objects.all().order_by("id").select_related("role")
5931

6032

61-
def get_authorized_product_type_members_for_user(user, permission):
62-
impl = get_auth_filter("product_type.get_authorized_product_type_members_for_user")
63-
if impl:
64-
return impl(user, permission)
65-
return Product_Type_Member.objects.filter(user=user).select_related("role", "product_type")
66-
67-
6833
def get_authorized_product_type_groups(permission):
6934
impl = get_auth_filter("product_type.get_authorized_product_type_groups")
7035
if impl:

dojo/product_type/views.py

Lines changed: 1 addition & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -29,10 +29,6 @@
2929
from dojo.models import Dojo_User, Finding, Product, Product_Type
3030
from dojo.product.queries import get_authorized_products
3131
from dojo.product_type.queries import (
32-
get_authorized_global_groups_for_product_type,
33-
get_authorized_global_members_for_product_type,
34-
get_authorized_groups_for_product_type,
35-
get_authorized_members_for_product_type,
3632
get_authorized_product_types,
3733
)
3834
from dojo.query_utils import build_count_subquery
@@ -126,12 +122,6 @@ def view_product_type(request, ptid):
126122
page_name = str(labels.ORG_READ_LABEL)
127123
pt = get_object_or_404(Product_Type, pk=ptid)
128124
authorized_users = pt.authorized_users.order_by("first_name", "last_name", "username")
129-
# kept for Pro template override `{% block rbac_members_panel %}` /
130-
# `{% block rbac_groups_panel %}` at pro/templates/dojo/view_product_type.html
131-
members = get_authorized_members_for_product_type(pt, "view")
132-
global_members = get_authorized_global_members_for_product_type(pt, "view")
133-
groups = get_authorized_groups_for_product_type(pt, "view")
134-
global_groups = get_authorized_global_groups_for_product_type(pt, "view")
135125
products = get_authorized_products("view").filter(prod_type=pt)
136126
filter_string_matching = get_system_setting("filter_string_matching", False)
137127
filter_class = ProductFilterWithoutObjectLookups if filter_string_matching else ProductFilter
@@ -145,10 +135,6 @@ def view_product_type(request, ptid):
145135
"products": products,
146136
"prod_filter": prod_filter,
147137
"authorized_users": authorized_users,
148-
"groups": groups,
149-
"members": members,
150-
"global_groups": global_groups,
151-
"global_members": global_members,
152138
})
153139

154140

@@ -191,7 +177,6 @@ def delete_product_type(request, ptid):
191177
def edit_product_type(request, ptid):
192178
page_name = str(labels.ORG_UPDATE_LABEL)
193179
pt = get_object_or_404(Product_Type, pk=ptid)
194-
members = get_authorized_members_for_product_type(pt, "staff_only")
195180
pt_form = Product_TypeForm(instance=pt)
196181
if request.method == "POST" and request.POST.get("edit_product_type"):
197182
pt_form = Product_TypeForm(request.POST, instance=pt)
@@ -210,8 +195,7 @@ def edit_product_type(request, ptid):
210195
"name": page_name,
211196
"label_edit_with_name": labels.ORG_UPDATE_WITH_NAME_LABEL % {"name": pt.name},
212197
"pt_form": pt_form,
213-
"pt": pt,
214-
"members": members})
198+
"pt": pt})
215199

216200

217201
def add_product_type_member(request, ptid):

dojo/user/views.py

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -47,8 +47,6 @@
4747
)
4848
from dojo.labels import get_labels
4949
from dojo.models import Alerts, Dojo_User, Product, Product_Type, UserContactInfo
50-
from dojo.product.queries import get_authorized_product_members_for_user
51-
from dojo.product_type.queries import get_authorized_product_type_members_for_user
5250
from dojo.user.authentication import reset_token_for_user
5351
from dojo.utils import add_breadcrumb, get_page_items, get_setting, get_system_setting
5452

@@ -345,19 +343,13 @@ def view_user(request, uid):
345343
accessible_products = Product.objects.filter(
346344
Q(authorized_users=user) | Q(prod_type__authorized_users=user),
347345
).distinct().order_by("name")
348-
# kept for Pro template override `{% block user_product_types_panel %}` /
349-
# `{% block user_products_panel %}` at pro/templates/dojo/view_user.html
350-
product_members = get_authorized_product_members_for_user(user, "view")
351-
product_type_members = get_authorized_product_type_members_for_user(user, "view")
352346
configuration_permission_form = ConfigurationPermissionsForm(user=user)
353347

354348
add_breadcrumb(title=_("View User"), top_level=False, request=request)
355349
return render(request, "dojo/view_user.html", {
356350
"user": user,
357351
"accessible_product_types": accessible_product_types,
358352
"accessible_products": accessible_products,
359-
"product_members": product_members,
360-
"product_type_members": product_type_members,
361353
"configuration_permission_form": configuration_permission_form})
362354

363355

0 commit comments

Comments
 (0)