Chore: refactor for clarity

This commit is contained in:
shamoon
2025-09-30 12:16:22 -07:00
parent f71b13b82a
commit d6710de486
2 changed files with 19 additions and 16 deletions

View File

@@ -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(

View File

@@ -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