feat: Views to cache discovered serializer

ref: #471 #511
This commit is contained in:
2025-01-31 22:09:11 +09:30
parent 49088f1f68
commit c5eb26e62b
38 changed files with 430 additions and 109 deletions

View File

@ -73,12 +73,21 @@ class ViewSet(ModelViewSet):
def get_serializer_class(self):
if self.serializer_class:
return self.serializer_class
if (
self.action == 'list'
or self.action == 'retrieve'
):
return globals()[str( self.model._meta.verbose_name).replace(' ', '') + 'ViewSerializer']
self.serializer_class = globals()[str( self.model._meta.verbose_name).replace(' ' , '') + 'ViewSerializer']
else:
self.serializer_class = globals()[str( self.model._meta.verbose_name).replace(' ' , '') + 'ModelSerializer']
return globals()[str( self.model._meta.verbose_name).replace(' ', '') + 'ModelSerializer']
return self.serializer_class

View File

@ -134,12 +134,21 @@ class ViewSet(ModelViewSet):
def get_serializer_class(self):
if self.serializer_class:
return self.serializer_class
if (
self.action == 'list'
or self.action == 'retrieve'
):
return globals()[str( self.model._meta.verbose_name).replace(' ', '') + 'ViewSerializer']
self.serializer_class = globals()[str( self.model._meta.verbose_name).replace(' ' , '') + 'ViewSerializer']
else:
self.serializer_class = globals()[str( self.model._meta.verbose_name).replace(' ' , '') + 'ModelSerializer']
return globals()[str( self.model._meta.verbose_name).replace(' ', '') + 'ModelSerializer']
return self.serializer_class

View File

@ -89,15 +89,24 @@ class ViewSet(ModelListRetrieveDeleteViewSet):
def get_serializer_class(self):
if self.serializer_class:
return self.serializer_class
if (
self.action == 'list'
or self.action == 'retrieve'
):
return globals()[str( self.model._meta.verbose_name).replace(' ', '') + 'ViewSerializer']
self.serializer_class = globals()[str( self.model._meta.verbose_name).replace(' ' , '') + 'ViewSerializer']
else:
self.serializer_class = globals()[str( self.model._meta.verbose_name).replace(' ' , '') + 'ModelSerializer']
return globals()[str( self.model._meta.verbose_name).replace(' ', '') + 'ModelSerializer']
return self.serializer_class
def get_queryset(self):

View File

@ -245,6 +245,10 @@ class TicketViewSet(ModelViewSet):
serializer_prefix = str(self._ticket_type).replace(' ', '')
if self.serializer_class:
return self.serializer_class
if (
self.action == 'create'
@ -253,34 +257,7 @@ class TicketViewSet(ModelViewSet):
or self.action == 'update'
):
organization = None
if (
self.action == 'create'
):
if self.request.data is not None:
if 'organization' in self.request.data:
organization = int(self.request.data['organization'])
organization = Organization.objects.get(
pk = organization
)
elif (
(
self.action == 'partial_update'
or self.action == 'partial_update'
)
and self.kwargs.get('pk', None)
):
organization = self.model.objects.get(
pk = int(self.kwargs['pk'])
).organization
organization = self._obj_organization
if organization:
@ -333,7 +310,10 @@ class TicketViewSet(ModelViewSet):
or self.action == 'retrieve'
):
return globals()[serializer_prefix + 'TicketViewSerializer']
self.serializer_class = globals()[serializer_prefix + 'TicketViewSerializer']
else:
return globals()[serializer_prefix + 'TicketModelSerializer']
self.serializer_class = globals()[serializer_prefix + 'TicketModelSerializer']
return self.serializer_class

View File

@ -73,12 +73,21 @@ class ViewSet(ModelViewSet):
def get_serializer_class(self):
if self.serializer_class:
return self.serializer_class
if (
self.action == 'list'
or self.action == 'retrieve'
):
return globals()[str( self.model._meta.verbose_name).replace(' ', '') + 'ViewSerializer']
self.serializer_class = globals()[str( self.model._meta.verbose_name).replace(' ' , '') + 'ViewSerializer']
else:
self.serializer_class = globals()[str( self.model._meta.verbose_name).replace(' ' , '') + 'ModelSerializer']
return globals()[str( self.model._meta.verbose_name).replace(' ', '') + 'ModelSerializer']
return self.serializer_class

View File

@ -212,6 +212,10 @@ class ViewSet(ModelViewSet):
def get_serializer_class(self):
if self.serializer_class:
return self.serializer_class
organization:int = None
serializer_prefix:str = 'TicketComment'
@ -335,10 +339,14 @@ class ViewSet(ModelViewSet):
or self.action == 'retrieve'
):
return globals()['TicketCommentViewSerializer']
self.serializer_class = globals()['TicketCommentViewSerializer']
return globals()[str(serializer_prefix).replace(' ', '') + 'ModelSerializer']
else:
self.serializer_class = globals()[str(serializer_prefix).replace(' ', '') + 'ModelSerializer']
return self.serializer_class

View File

@ -69,12 +69,21 @@ class ViewSet(ModelViewSet):
def get_serializer_class(self):
if self.serializer_class:
return self.serializer_class
if (
self.action == 'list'
or self.action == 'retrieve'
):
return globals()[str( self.model._meta.verbose_name).replace(' ', '') + 'ViewSerializer']
self.serializer_class = globals()[str( self.model._meta.verbose_name).replace(' ' , '') + 'ViewSerializer']
else:
self.serializer_class = globals()[str( self.model._meta.verbose_name).replace(' ' , '') + 'ModelSerializer']
return globals()[str( self.model._meta.verbose_name).replace(' ', '') + 'ModelSerializer']
return self.serializer_class

View File

@ -200,15 +200,24 @@ class ViewSet(ModelViewSet):
def get_serializer_class(self):
if self.serializer_class:
return self.serializer_class
if (
self.action == 'list'
or self.action == 'retrieve'
):
return globals()[str( self.model._meta.verbose_name).replace(' ', '') + 'ViewSerializer']
self.serializer_class = globals()[str( self.model._meta.verbose_name).replace(' ' , '') + 'ViewSerializer']
else:
self.serializer_class = globals()[str( self.model._meta.verbose_name).replace(' ' , '') + 'ModelSerializer']
return globals()[str( self.model._meta.verbose_name).replace(' ', '') + 'ModelSerializer']
return self.serializer_class