Skip to content

Commit 0f317aa

Browse files
fix(actors): visibility rules (#3230)
* fix(actors): visibility rules * add exclude_third_parties filter * update forms with actors * fix exclude_third_parties filter * revert core.models changes * remove unused imports * remove folder property * remove actor.folder from serializer * filter out third parties by default --------- Co-authored-by: Abderrahmane Smimite <smimite@gmail.com>
1 parent 04f71e0 commit 0f317aa

21 files changed

Lines changed: 39 additions & 36 deletions

backend/core/base_models.py

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from django.db import models
1+
from django.db import models, transaction
22
from django.utils.translation import gettext_lazy as _
33
from django.urls.base import reverse_lazy
44
from django.core.exceptions import ValidationError
@@ -157,16 +157,17 @@ class Meta:
157157
abstract = True
158158

159159
def save(self, *args, **kwargs):
160-
is_new = self._state.adding
161-
super().save(*args, **kwargs)
160+
with transaction.atomic():
161+
is_new = self._state.adding
162+
super().save(*args, **kwargs)
162163

163-
# If this is a new record, create the actor.
164-
# We use get_or_create to be safe against race conditions/re-saves.
165-
if is_new:
166-
from .models import Actor
164+
# If this is a new record, create the actor.
165+
# We use get_or_create to be safe against race conditions/re-saves.
166+
if is_new:
167+
from .models import Actor
167168

168-
field_name = self.__class__.__name__.lower()
169-
Actor.objects.get_or_create(**{field_name: self})
169+
field_name = self.__class__.__name__.lower()
170+
Actor.objects.get_or_create(**{field_name: self})
170171

171172

172173
class ActorSyncManager(models.Manager):

backend/core/views.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5662,7 +5662,6 @@ class ActorViewSet(BaseModelViewSet):
56625662
"display_name",
56635663
"id",
56645664
]
5665-
filterset_fields = ["user__is_third_party"]
56665665

56675666
def get_queryset(self):
56685667
queryset = super().get_queryset()
@@ -5691,6 +5690,9 @@ def get_queryset(self):
56915690
if not allow_entities:
56925691
queryset = queryset.filter(entity__isnull=True)
56935692

5693+
third_parties = Actor.objects.filter(user__is_third_party=True)
5694+
queryset = queryset.exclude(id__in=third_parties)
5695+
56945696
return queryset.order_by("type_rank", "display_name")
56955697

56965698

frontend/src/lib/components/Forms/ModelForm/AppliedControlPolicyForm.svelte

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@
8282
<AutocompleteSelect
8383
{form}
8484
multiple
85-
optionsEndpoint="actors?user__is_third_party=False"
85+
optionsEndpoint="actors"
8686
optionsLabelField="str"
8787
optionsInfoFields={{
8888
fields: [{ field: 'type', translate: true }],

frontend/src/lib/components/Forms/ModelForm/AssetForm.svelte

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@
117117
<AutocompleteSelect
118118
{form}
119119
multiple
120-
optionsEndpoint="actors?user__is_third_party=False"
120+
optionsEndpoint="actors"
121121
optionsLabelField="str"
122122
optionsInfoFields={{
123123
fields: [{ field: 'type', translate: true }],

frontend/src/lib/components/Forms/ModelForm/BusinessImpactAnalysisForm.svelte

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@
7575
<AutocompleteSelect
7676
{form}
7777
multiple
78-
optionsEndpoint="actors?user__is_third_party=False"
78+
optionsEndpoint="actors"
7979
optionsLabelField="str"
8080
optionsInfoFields={{
8181
fields: [{ field: 'type', translate: true }],
@@ -89,7 +89,7 @@
8989
<AutocompleteSelect
9090
{form}
9191
multiple
92-
optionsEndpoint="actors?user__is_third_party=False"
92+
optionsEndpoint="actors"
9393
optionsLabelField="str"
9494
optionsInfoFields={{
9595
fields: [{ field: 'type', translate: true }],

frontend/src/lib/components/Forms/ModelForm/ComplianceAssessmentForm.svelte

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -159,7 +159,7 @@
159159
<AutocompleteSelect
160160
{form}
161161
multiple
162-
optionsEndpoint="actors?user__is_third_party=False"
162+
optionsEndpoint="actors"
163163
optionsLabelField="str"
164164
optionsInfoFields={{
165165
fields: [{ field: 'type', translate: true }],
@@ -268,7 +268,7 @@
268268
<AutocompleteSelect
269269
{form}
270270
multiple
271-
optionsEndpoint="actors?user__is_third_party=False"
271+
optionsEndpoint="actors"
272272
optionsLabelField="str"
273273
optionsInfoFields={{
274274
fields: [{ field: 'type', translate: true }],

frontend/src/lib/components/Forms/ModelForm/ContractForm.svelte

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,7 @@
129129
<AutocompleteSelect
130130
{form}
131131
multiple
132-
optionsEndpoint="actors?user__is_third_party=False"
132+
optionsEndpoint="actors"
133133
optionsLabelField="str"
134134
optionsInfoFields={{
135135
fields: [{ field: 'type', translate: true }],

frontend/src/lib/components/Forms/ModelForm/EbiosRmForm.svelte

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,7 @@
149149
<AutocompleteSelect
150150
multiple
151151
{form}
152-
optionsEndpoint="actors?user__is_third_party=False"
152+
optionsEndpoint="actors"
153153
optionsLabelField="str"
154154
optionsInfoFields={{
155155
fields: [{ field: 'type', translate: true }],
@@ -163,7 +163,7 @@
163163
<AutocompleteSelect
164164
multiple
165165
{form}
166-
optionsEndpoint="actors?user__is_third_party=False"
166+
optionsEndpoint="actors"
167167
optionsLabelField="str"
168168
optionsInfoFields={{
169169
fields: [{ field: 'type', translate: true }],

frontend/src/lib/components/Forms/ModelForm/EntityAssessmentForm.svelte

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -179,7 +179,7 @@
179179
<AutocompleteSelect
180180
{form}
181181
multiple
182-
optionsEndpoint="actors?user__is_third_party=False"
182+
optionsEndpoint="actors"
183183
optionsLabelField="str"
184184
optionsInfoFields={{
185185
fields: [{ field: 'type', translate: true }],
@@ -193,7 +193,7 @@
193193
<AutocompleteSelect
194194
{form}
195195
multiple
196-
optionsEndpoint="actors?user__is_third_party=False"
196+
optionsEndpoint="actors"
197197
optionsLabelField="str"
198198
optionsInfoFields={{
199199
fields: [{ field: 'type', translate: true }],

frontend/src/lib/components/Forms/ModelForm/EvidenceForm.svelte

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@
106106
<AutocompleteSelect
107107
{form}
108108
multiple
109-
optionsEndpoint="actors?user__is_third_party=False"
109+
optionsEndpoint="actors"
110110
optionsLabelField="str"
111111
optionsInfoFields={{
112112
fields: [{ field: 'type', translate: true }],

0 commit comments

Comments
 (0)