1
0
mirror of https://github.com/netbox-community/netbox.git synced 2024-05-10 07:54:54 +00:00

Closes #10718: Optimize object-based permissions enforcement

This commit is contained in:
jeremystretch
2022-10-21 12:39:03 -04:00
parent 96c4696417
commit 3d687a6c2d
2 changed files with 4 additions and 5 deletions

View File

@ -108,6 +108,5 @@ class ObjectValidationMixin:
conforming_count = self.queryset.filter(pk__in=[obj.pk for obj in instance]).count()
if conforming_count != len(instance):
raise ObjectDoesNotExist
else:
# Check that the instance is matched by the view's queryset
self.queryset.get(pk=instance.pk)
elif not self.queryset.filter(pk=instance.pk).exists():
raise ObjectDoesNotExist

View File

@ -173,7 +173,7 @@ class ObjectImportView(GetReturnURLMixin, BaseObjectView):
obj = model_form.save()
# Enforce object-level permissions
if not self.queryset.filter(pk=obj.pk).first():
if not self.queryset.filter(pk=obj.pk).exists():
raise PermissionsViolation()
# Iterate through the related object forms (if any), validating and saving each instance.
@ -390,7 +390,7 @@ class ObjectEditView(GetReturnURLMixin, BaseObjectView):
obj = form.save()
# Check that the new object conforms with any assigned object-level permissions
if not self.queryset.filter(pk=obj.pk).first():
if not self.queryset.filter(pk=obj.pk).exists():
raise PermissionsViolation()
msg = '{} {}'.format(