Skip to content

Commit

Permalink
feat: Views to cache discovered serializer
Browse files Browse the repository at this point in the history
ref: #471 #511
  • Loading branch information
jon-nfc committed Jan 31, 2025
1 parent 49088f1 commit d86cc8a
Show file tree
Hide file tree
Showing 38 changed files with 429 additions and 80 deletions.
13 changes: 11 additions & 2 deletions app/access/viewsets/organization.py
Original file line number Diff line number Diff line change
Expand Up @@ -75,13 +75,22 @@ 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) + 'ViewSerializer']
self.serializer_class = globals()[str( self.model._meta.verbose_name) + 'ViewSerializer']

else:

self.serializer_class = globals()[str( self.model._meta.verbose_name) + 'ModelSerializer']


return globals()[str( self.model._meta.verbose_name) + 'ModelSerializer']
return self.serializer_class

13 changes: 11 additions & 2 deletions app/access/viewsets/team_user.py
Original file line number Diff line number Diff line change
Expand Up @@ -184,15 +184,24 @@ def get_queryset(self):

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_return_url(self):
Expand Down
19 changes: 17 additions & 2 deletions app/api/viewsets/common.py
Original file line number Diff line number Diff line change
Expand Up @@ -561,6 +561,12 @@ class ModelViewSetBase(
_Optional_, Used by API text search as the fields to search.
"""

serializer_class = None
"""Serializer class to use,
If not used, use get_serializer_class function and cache the class here.
"""


def get_queryset(self):

Expand All @@ -582,15 +588,24 @@ def get_queryset(self):

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) + 'ViewSerializer']
self.serializer_class = globals()[str( self.model._meta.verbose_name) + 'ViewSerializer']

else:

self.serializer_class = globals()[str( self.model._meta.verbose_name) + 'ModelSerializer']


return globals()[str( self.model._meta.verbose_name) + 'ModelSerializer']
return self.serializer_class



Expand Down
13 changes: 11 additions & 2 deletions app/assistance/viewsets/knowledge_base.py
Original file line number Diff line number Diff line change
Expand Up @@ -82,13 +82,22 @@ 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

16 changes: 12 additions & 4 deletions app/assistance/viewsets/model_knowledge_base_article.py
Original file line number Diff line number Diff line change
Expand Up @@ -138,15 +138,23 @@ def get_queryset(self):

def get_serializer_class(self):

all_models = apps.get_models()

# all_models = apps.get_models()

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
13 changes: 11 additions & 2 deletions app/config_management/viewsets/config_group.py
Original file line number Diff line number Diff line change
Expand Up @@ -94,13 +94,22 @@ def get_queryset(self):

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

13 changes: 11 additions & 2 deletions app/config_management/viewsets/config_group_software.py
Original file line number Diff line number Diff line change
Expand Up @@ -86,13 +86,22 @@ def get_queryset(self):

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

13 changes: 11 additions & 2 deletions app/core/viewsets/manufacturer.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
13 changes: 11 additions & 2 deletions app/core/viewsets/notes.py
Original file line number Diff line number Diff line change
Expand Up @@ -134,12 +134,21 @@ def get_view_name(self):

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
13 changes: 11 additions & 2 deletions app/core/viewsets/related_ticket.py
Original file line number Diff line number Diff line change
Expand Up @@ -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):
Expand Down
14 changes: 12 additions & 2 deletions app/core/viewsets/ticket.py
Original file line number Diff line number Diff line change
Expand Up @@ -245,6 +245,10 @@ def get_serializer_class(self):

serializer_prefix = str(self._ticket_type).replace(' ', '')

if self.serializer_class:

return self.serializer_class


if (
self.action == 'create'
Expand Down Expand Up @@ -333,7 +337,13 @@ def get_serializer_class(self):
or self.action == 'retrieve'
):

return globals()[serializer_prefix + 'TicketViewSerializer']
self.serializer_class = globals()[serializer_prefix + 'TicketViewSerializer']

else:
self.serializer_class = globals()[serializer_prefix + 'TicketModelSerializer']
self.serializer_class = globals()[serializer_prefix + 'TicketModelSerializer']

return self.serializer_class


return globals()[serializer_prefix + 'TicketModelSerializer']
return self.serializer_class
13 changes: 11 additions & 2 deletions app/core/viewsets/ticket_category.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
12 changes: 10 additions & 2 deletions app/core/viewsets/ticket_comment.py
Original file line number Diff line number Diff line change
Expand Up @@ -212,6 +212,10 @@ def get_queryset(self):

def get_serializer_class(self):

if self.serializer_class:

return self.serializer_class

organization:int = None

serializer_prefix:str = 'TicketComment'
Expand Down Expand Up @@ -335,10 +339,14 @@ def get_serializer_class(self):
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



Expand Down
13 changes: 11 additions & 2 deletions app/core/viewsets/ticket_comment_category.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
13 changes: 11 additions & 2 deletions app/core/viewsets/ticket_linked_item.py
Original file line number Diff line number Diff line change
Expand Up @@ -200,15 +200,24 @@ def get_parent_model(self):

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



Expand Down
Loading

0 comments on commit d86cc8a

Please sign in to comment.