|
26 | 26 |
|
27 | 27 | from aap_eda.api import exceptions as api_exc, filters, serializers
|
28 | 28 | from aap_eda.core import models
|
| 29 | +from aap_eda.core.enums import Action |
29 | 30 |
|
30 | 31 | from .mixins import PartialUpdateOnlyModelMixin
|
31 | 32 |
|
@@ -123,15 +124,24 @@ def destroy(self, request, *args, **kwargs):
|
123 | 124 | ],
|
124 | 125 | )
|
125 | 126 | @action(
|
126 |
| - detail=True, |
| 127 | + detail=False, |
127 | 128 | methods=["get"],
|
128 | 129 | queryset=models.Team.objects.order_by("id"),
|
129 | 130 | filterset_class=filters.OrganizationTeamFilter,
|
| 131 | + rbac_action=Action.READ, |
| 132 | + url_path="(?P<id>[^/.]+)/teams", |
130 | 133 | )
|
131 |
| - def teams(self, request, pk): |
132 |
| - organization = self.get_object() |
| 134 | + def teams(self, request, id): |
| 135 | + org_exists = ( |
| 136 | + models.Organization.access_qs(request.user).filter(id=id).exists() |
| 137 | + ) |
| 138 | + if not org_exists: |
| 139 | + raise api_exc.NotFound( |
| 140 | + code=status.HTTP_404_NOT_FOUND, |
| 141 | + detail=f"Organization with ID={id} does not exist.", |
| 142 | + ) |
133 | 143 |
|
134 |
| - teams = models.Team.objects.filter(organization_id=organization.id) |
| 144 | + teams = models.Team.objects.filter(organization_id=id) |
135 | 145 | filtered_teams = self.filter_queryset(teams)
|
136 | 146 | result = self.paginate_queryset(filtered_teams)
|
137 | 147 | serializer = serializers.TeamSerializer(result, many=True)
|
|
0 commit comments