mirror of
https://github.com/paperless-ngx/paperless-ngx.git
synced 2025-10-02 01:42:50 -05:00
Chore: refactor for clarity
This commit is contained in:
@@ -237,7 +237,7 @@ class TestViews(DirectoriesMixin, TestCase):
|
|||||||
WHEN:
|
WHEN:
|
||||||
- Request to get tag list with full permissions is made
|
- Request to get tag list with full permissions is made
|
||||||
THEN:
|
THEN:
|
||||||
- Permissions are not queries in database tag by tag,
|
- Permissions are not queried in database tag by tag,
|
||||||
i.e. there are no N+1 queries
|
i.e. there are no N+1 queries
|
||||||
"""
|
"""
|
||||||
view_permissions = Permission.objects.filter(
|
view_permissions = Permission.objects.filter(
|
||||||
|
@@ -264,13 +264,6 @@ class BulkPermissionMixin:
|
|||||||
Prefetch Django-Guardian permissions for a list before serialization, to avoid N+1 queries.
|
Prefetch Django-Guardian permissions for a list before serialization, to avoid N+1 queries.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def get_permission_codenames(self):
|
|
||||||
model_name = self.queryset.model.__name__.lower()
|
|
||||||
return {
|
|
||||||
"view": f"view_{model_name}",
|
|
||||||
"change": f"change_{model_name}",
|
|
||||||
}
|
|
||||||
|
|
||||||
def _get_object_perms(
|
def _get_object_perms(
|
||||||
self,
|
self,
|
||||||
objects: list,
|
objects: list,
|
||||||
@@ -332,22 +325,32 @@ class BulkPermissionMixin:
|
|||||||
else:
|
else:
|
||||||
queryset = self.filter_queryset(self.get_queryset())
|
queryset = self.filter_queryset(self.get_queryset())
|
||||||
|
|
||||||
codenames = self.get_permission_codenames()
|
model_name = self.queryset.model.__name__.lower()
|
||||||
perm_names = [codenames["view"], codenames["change"]]
|
permission_name_view = f"view_{model_name}"
|
||||||
user_perms = self._get_object_perms(queryset, perm_names, actor="users")
|
permission_name_change = f"change_{model_name}"
|
||||||
group_perms = self._get_object_perms(queryset, perm_names, actor="groups")
|
|
||||||
|
user_perms = self._get_object_perms(
|
||||||
|
objects=queryset,
|
||||||
|
perm_codenames=[permission_name_view, permission_name_change],
|
||||||
|
actor="users",
|
||||||
|
)
|
||||||
|
group_perms = self._get_object_perms(
|
||||||
|
objects=queryset,
|
||||||
|
perm_codenames=[permission_name_view, permission_name_change],
|
||||||
|
actor="groups",
|
||||||
|
)
|
||||||
|
|
||||||
context["users_view_perms"] = {
|
context["users_view_perms"] = {
|
||||||
pk: user_perms[pk][codenames["view"]] for pk in user_perms
|
pk: user_perms[pk][permission_name_view] for pk in user_perms
|
||||||
}
|
}
|
||||||
context["users_change_perms"] = {
|
context["users_change_perms"] = {
|
||||||
pk: user_perms[pk][codenames["change"]] for pk in user_perms
|
pk: user_perms[pk][permission_name_change] for pk in user_perms
|
||||||
}
|
}
|
||||||
context["groups_view_perms"] = {
|
context["groups_view_perms"] = {
|
||||||
pk: group_perms[pk][codenames["view"]] for pk in group_perms
|
pk: group_perms[pk][permission_name_view] for pk in group_perms
|
||||||
}
|
}
|
||||||
context["groups_change_perms"] = {
|
context["groups_change_perms"] = {
|
||||||
pk: group_perms[pk][codenames["change"]] for pk in group_perms
|
pk: group_perms[pk][permission_name_change] for pk in group_perms
|
||||||
}
|
}
|
||||||
|
|
||||||
return context
|
return context
|
||||||
|
Reference in New Issue
Block a user