Skip to content

Commit 6156ce4

Browse files
committed
remove orphaned OrganizationGroup V3 API ViewSet, serializer, filter, and permission
Same shape as the previous slice. The OrganizationGroupViewSet, OrganizationGroupSerializer, OrganizationGroupFilterSet, and UserHasOrganizationGroupPermission classes touch the Product_Type_Group RBAC model and were never registered with v2_api. Drop them and the unused imports left over (Product_Type_Group, get_authorized_product_type_groups, user_has_permission, NumberFilter, PermissionDenied, ValidationError).
1 parent 3faf5e1 commit 6156ce4

4 files changed

Lines changed: 3 additions & 114 deletions

File tree

dojo/authorization/api_permissions.py

Lines changed: 0 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -571,25 +571,6 @@ def has_object_permission(self, request, view, obj):
571571
)
572572

573573

574-
class UserHasOrganizationGroupPermission(permissions.BasePermission):
575-
def has_permission(self, request, view):
576-
return check_post_permission(
577-
request,
578-
Product_Type,
579-
"organization",
580-
"add",
581-
)
582-
583-
def has_object_permission(self, request, view, obj):
584-
return check_object_permission(
585-
request,
586-
obj,
587-
"view",
588-
"edit",
589-
"delete",
590-
)
591-
592-
593574
class UserHasReimportPermission(permissions.BasePermission):
594575
def has_permission(self, request, view):
595576
# permission check takes place before validation, so we don't have access to serializer.validated_data()

dojo/organization/api/filters.py

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,6 @@
1-
from django_filters import BooleanFilter, NumberFilter
1+
from django_filters import BooleanFilter
22
from django_filters.rest_framework import FilterSet
33

4-
from dojo.authorization.models import (
5-
Product_Type_Group,
6-
)
74
from dojo.labels import get_labels
85
from dojo.models import Product_Type
96

@@ -19,9 +16,3 @@ class Meta:
1916
fields = ("id", "name", "created", "updated")
2017

2118

22-
class OrganizationGroupFilterSet(FilterSet):
23-
asset_type_id = NumberFilter(field_name="product_type_id")
24-
25-
class Meta:
26-
model = Product_Type_Group
27-
fields = ("id", "group_id")

dojo/organization/api/serializers.py

Lines changed: 0 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,5 @@
11
from rest_framework import serializers
2-
from rest_framework.exceptions import PermissionDenied, ValidationError
32

4-
from dojo.authorization.authorization import user_has_permission
5-
from dojo.authorization.models import (
6-
Product_Type_Group,
7-
)
83
from dojo.models import Product_Type
94
from dojo.product_type.queries import get_authorized_product_types
105

@@ -14,49 +9,6 @@ def get_queryset(self):
149
return get_authorized_product_types("view")
1510

1611

17-
class OrganizationGroupSerializer(serializers.ModelSerializer):
18-
organization = RelatedOrganizationField(source="product_type")
19-
20-
class Meta:
21-
model = Product_Type_Group
22-
exclude = ("product_type",)
23-
24-
def validate(self, data):
25-
if (
26-
self.instance is not None
27-
and data.get("organization") != self.instance.product_type
28-
and not user_has_permission(
29-
self.context["request"].user,
30-
data.get("organization"),
31-
"add",
32-
)
33-
):
34-
msg = "You are not permitted to add a group to this Organization"
35-
raise PermissionDenied(msg)
36-
37-
if (
38-
self.instance is None
39-
or data.get("organization") != self.instance.product_type
40-
or data.get("group") != self.instance.group
41-
):
42-
members = Product_Type_Group.objects.filter(
43-
product_type=data.get("organization"), group=data.get("group"),
44-
)
45-
if members.count() > 0:
46-
msg = "Organization Group already exists"
47-
raise ValidationError(msg)
48-
49-
if data.get("role").is_owner and not user_has_permission(
50-
self.context["request"].user,
51-
data.get("organization"),
52-
"staff_only",
53-
):
54-
msg = "You are not permitted to add a group as Owner to this Organization"
55-
raise PermissionDenied(msg)
56-
57-
return data
58-
59-
6012
class OrganizationSerializer(serializers.ModelSerializer):
6113
critical_asset = serializers.BooleanField(source="critical_product", default=False)
6214
key_asset = serializers.BooleanField(source="key_product", default=False)

dojo/organization/api/views.py

Lines changed: 2 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -8,19 +8,10 @@
88
from dojo.api_v2.serializers import ReportGenerateOptionSerializer, ReportGenerateSerializer
99
from dojo.api_v2.views import PrefetchDojoModelViewSet, report_generate, schema_with_prefetch
1010
from dojo.authorization import api_permissions as permissions
11-
from dojo.authorization.models import (
12-
Product_Type_Group,
13-
)
1411
from dojo.models import Product_Type
1512
from dojo.organization.api import serializers
16-
from dojo.organization.api.filters import (
17-
OrganizationFilterSet,
18-
OrganizationGroupFilterSet,
19-
)
20-
from dojo.product_type.queries import (
21-
get_authorized_product_type_groups,
22-
get_authorized_product_types,
23-
)
13+
from dojo.organization.api.filters import OrganizationFilterSet
14+
from dojo.product_type.queries import get_authorized_product_types
2415
from dojo.utils import async_delete, get_setting
2516

2617

@@ -90,29 +81,3 @@ def generate_report(self, request, pk=None):
9081
return Response(report.data)
9182

9283

93-
# Authorization: object-based
94-
@extend_schema_view(**schema_with_prefetch())
95-
class OrganizationGroupViewSet(
96-
PrefetchDojoModelViewSet,
97-
):
98-
serializer_class = serializers.OrganizationGroupSerializer
99-
queryset = Product_Type_Group.objects.none()
100-
filter_backends = (DjangoFilterBackend,)
101-
filterset_class = OrganizationGroupFilterSet
102-
permission_classes = (
103-
IsAuthenticated,
104-
permissions.UserHasOrganizationGroupPermission,
105-
)
106-
107-
def get_queryset(self):
108-
return get_authorized_product_type_groups(
109-
"view",
110-
).distinct()
111-
112-
@extend_schema(
113-
exclude=True,
114-
)
115-
def partial_update(self, request, pk=None):
116-
# Object authorization won't work if not all data is provided
117-
response = {"message": "Patch function is not offered in this path."}
118-
return Response(response, status=status.HTTP_405_METHOD_NOT_ALLOWED)

0 commit comments

Comments
 (0)