|
4 | 4 | from django.db import transaction |
5 | 5 | from django.db.models import Model |
6 | 6 | from django.utils.translation import gettext_lazy as _ |
| 7 | +from django.contrib.contenttypes.models import ContentType |
7 | 8 | from rest_framework import permissions |
8 | 9 | from rest_framework.exceptions import ValidationError |
9 | 10 | from rest_framework.generics import GenericAPIView |
@@ -49,6 +50,11 @@ class RoleMetadataView(AnsibleBaseDjangoAppApiView, GenericAPIView): |
49 | 50 | permission_classes = try_add_oauth2_scope_permission([permissions.IsAuthenticated]) |
50 | 51 | serializer_class = RoleMetadataSerializer |
51 | 52 |
|
| 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 | + |
52 | 58 | def get(self, request, format=None): |
53 | 59 | data = OrderedDict() |
54 | 60 | allowed_permissions = OrderedDict() |
@@ -109,6 +115,11 @@ def perform_destroy(self, instance): |
109 | 115 | self._error_if_managed(instance) |
110 | 116 | return super().perform_destroy(instance) |
111 | 117 |
|
| 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 | + |
112 | 123 |
|
113 | 124 | assignment_prefetch_base = ('content_object', 'content_type', 'role_definition', 'created_by', 'object_role') |
114 | 125 |
|
|
0 commit comments