Chore: Consolidate to a single way to set permission on an object (#14453)

* Chore: drop set_permissions_for_object in favor of the bulk helper

The same grant rules were implemented twice, and only the bulk version
validated every action before writing, so the single-object one could leave
a partial change behind.

* Chore: type the set-permissions dict

Callers passed whatever they had, including querysets of User and Group
objects that only worked because id__in accepts a subquery.
This commit is contained in:
Trenton H authored and GitHub committed 2026-10-24 13:28:25 -07:00
1 parent a74256cd2a
commit e7d70497c2
6 files changed
+73 -149

No files matched your search

+6 -5
View File
@@ -24,6 +24,7 @@ from documents.models import DocumentType
from documents.models import StoragePath
from documents.models import Tag
from documents.pdf_ops import PageSpec
from documents.permissions import PermissionsSpec
from documents.permissions import set_permissions_for_objects
from paperless_testing.dirs import DirectoriesMixin
from paperless_testing.factories import DocumentFactory
@@ -446,7 +447,7 @@ class TestBulkEdit(DirectoriesMixin, TestCase):
grant_object(self.group1, self.doc1, "view_document")
permissions = {
permissions: PermissionsSpec = {
"view": {
"users": [self.user1.id, self.user2.id],
"groups": [self.group2.id],
@@ -489,7 +490,7 @@ class TestBulkEdit(DirectoriesMixin, TestCase):
grant_object(self.user1, self.doc1, "view_document")
grant_object(self.group1, self.doc1, "view_document")
permissions = {
permissions: PermissionsSpec = {
"view": {
"users": [self.user2.id],
"groups": [self.group2.id],
@@ -540,7 +541,7 @@ class TestBulkEdit(DirectoriesMixin, TestCase):
batched call rather than one call per (document, identity)
pair
"""
permissions = {
permissions: PermissionsSpec = {
"view": {
"users": [self.user1.id, self.user2.id],
"groups": [self.group2.id],
@@ -647,7 +648,7 @@ class TestBulkEdit(DirectoriesMixin, TestCase):
"""
with self.assertRaises(Permission.DoesNotExist):
set_permissions_for_objects(
{"not_a_real_action": {"users": [self.user1.id], "groups": []}},
{"not_a_real_action": {"users": [self.user1.id], "groups": []}}, # type: ignore[bad-assignment]
Document,
[self.doc1.pk],
)
@@ -675,7 +676,7 @@ class TestBulkEdit(DirectoriesMixin, TestCase):
set_permissions_for_objects(
{
"view": {"users": [self.user1.id], "groups": []},
"not_a_real_action": {"users": [self.user1.id], "groups": []},
"not_a_real_action": {"users": [self.user1.id], "groups": []}, # type: ignore[bad-assignment]
},
Document,
[self.doc1.pk],