Skip to content

Commit ff418cf

Browse files
committed
Optimize the role_definition view
1 parent 1c8de23 commit ff418cf

File tree

1 file changed

+11
-0
lines changed

1 file changed

+11
-0
lines changed

ansible_base/rbac/api/views.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
from django.db import transaction
55
from django.db.models import Model
66
from django.utils.translation import gettext_lazy as _
7+
from django.contrib.contenttypes.models import ContentType
78
from rest_framework import permissions
89
from rest_framework.exceptions import ValidationError
910
from rest_framework.generics import GenericAPIView
@@ -49,6 +50,11 @@ class RoleMetadataView(AnsibleBaseDjangoAppApiView, GenericAPIView):
4950
permission_classes = try_add_oauth2_scope_permission([permissions.IsAuthenticated])
5051
serializer_class = RoleMetadataSerializer
5152

53+
def dispatch(self, request, *args, **kwargs):
54+
# Warm cache to avoid hits to basically all types from serializer
55+
ContentType.objects.get_for_models(*permission_registry.all_registered_models)
56+
return super().dispatch(request, *args, **kwargs)
57+
5258
def get(self, request, format=None):
5359
data = OrderedDict()
5460
allowed_permissions = OrderedDict()
@@ -109,6 +115,11 @@ def perform_destroy(self, instance):
109115
self._error_if_managed(instance)
110116
return super().perform_destroy(instance)
111117

118+
def dispatch(self, request, *args, **kwargs):
119+
# Warm cache to avoid hits to basically all types from serializer
120+
ContentType.objects.get_for_models(*permission_registry.all_registered_models)
121+
return super().dispatch(request, *args, **kwargs)
122+
112123

113124
assignment_prefetch_base = ('content_object', 'content_type', 'role_definition', 'created_by', 'object_role')
114125

0 commit comments

Comments
 (0)