From c5eb26e62b4b0ec5ae55f754885d7849ac9a273f Mon Sep 17 00:00:00 2001 From: Jon Date: Fri, 31 Jan 2025 22:09:11 +0930 Subject: [PATCH] feat: Views to cache discovered serializer ref: #471 #511 --- app/access/viewsets/organization.py | 13 +++++- app/access/viewsets/team_user.py | 13 +++++- app/api/viewsets/common.py | 19 ++++++++- app/assistance/viewsets/knowledge_base.py | 13 +++++- .../viewsets/model_knowledge_base_article.py | 18 ++++++--- .../viewsets/config_group.py | 13 +++++- .../viewsets/config_group_software.py | 13 +++++- app/core/viewsets/manufacturer.py | 13 +++++- app/core/viewsets/notes.py | 13 +++++- app/core/viewsets/related_ticket.py | 13 +++++- app/core/viewsets/ticket.py | 40 +++++-------------- app/core/viewsets/ticket_category.py | 13 +++++- app/core/viewsets/ticket_comment.py | 12 +++++- app/core/viewsets/ticket_comment_category.py | 13 +++++- app/core/viewsets/ticket_linked_item.py | 13 +++++- app/itam/viewsets/device.py | 14 ++++++- app/itam/viewsets/device_model.py | 13 +++++- app/itam/viewsets/device_operating_system.py | 13 +++++- app/itam/viewsets/device_software.py | 17 ++++++-- app/itam/viewsets/device_type.py | 13 +++++- app/itam/viewsets/operating_system.py | 13 +++++- app/itam/viewsets/operating_system_version.py | 13 +++++- app/itam/viewsets/software.py | 13 +++++- app/itam/viewsets/software_category.py | 13 +++++- app/itam/viewsets/software_version.py | 13 +++++- app/itim/viewsets/cluster.py | 13 +++++- app/itim/viewsets/cluster_type.py | 13 +++++- app/itim/viewsets/port.py | 13 +++++- app/itim/viewsets/service.py | 13 +++++- app/itim/viewsets/service_cluster.py | 13 +++++- app/itim/viewsets/service_device.py | 13 +++++- app/project_management/viewsets/project.py | 16 ++++++-- .../viewsets/project_milestone.py | 13 +++++- .../viewsets/project_state.py | 13 +++++- .../viewsets/project_type.py | 13 +++++- app/settings/viewsets/app_settings.py | 13 +++++- app/settings/viewsets/external_link.py | 13 +++++- app/settings/viewsets/user_settings.py | 13 +++++- 38 files changed, 430 insertions(+), 109 deletions(-) diff --git a/app/access/viewsets/organization.py b/app/access/viewsets/organization.py index 354512f8..bd9c9565 100644 --- a/app/access/viewsets/organization.py +++ b/app/access/viewsets/organization.py @@ -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 diff --git a/app/access/viewsets/team_user.py b/app/access/viewsets/team_user.py index a982288f..319e3b46 100644 --- a/app/access/viewsets/team_user.py +++ b/app/access/viewsets/team_user.py @@ -184,15 +184,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 def get_return_url(self): diff --git a/app/api/viewsets/common.py b/app/api/viewsets/common.py index d3b45d00..577b9d80 100644 --- a/app/api/viewsets/common.py +++ b/app/api/viewsets/common.py @@ -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): @@ -582,15 +588,24 @@ class ModelViewSetBase( 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 diff --git a/app/assistance/viewsets/knowledge_base.py b/app/assistance/viewsets/knowledge_base.py index 82f71bd0..a3baa152 100644 --- a/app/assistance/viewsets/knowledge_base.py +++ b/app/assistance/viewsets/knowledge_base.py @@ -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 diff --git a/app/assistance/viewsets/model_knowledge_base_article.py b/app/assistance/viewsets/model_knowledge_base_article.py index a95a9c7f..019bd646 100644 --- a/app/assistance/viewsets/model_knowledge_base_article.py +++ b/app/assistance/viewsets/model_knowledge_base_article.py @@ -138,15 +138,23 @@ class ViewSet( ModelViewSet ): 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 diff --git a/app/config_management/viewsets/config_group.py b/app/config_management/viewsets/config_group.py index ce46e405..8bd75a8a 100644 --- a/app/config_management/viewsets/config_group.py +++ b/app/config_management/viewsets/config_group.py @@ -94,13 +94,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 diff --git a/app/config_management/viewsets/config_group_software.py b/app/config_management/viewsets/config_group_software.py index 92cdc95f..1097fd78 100644 --- a/app/config_management/viewsets/config_group_software.py +++ b/app/config_management/viewsets/config_group_software.py @@ -86,13 +86,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 diff --git a/app/core/viewsets/manufacturer.py b/app/core/viewsets/manufacturer.py index 86175c6a..f69dad05 100644 --- a/app/core/viewsets/manufacturer.py +++ b/app/core/viewsets/manufacturer.py @@ -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 diff --git a/app/core/viewsets/notes.py b/app/core/viewsets/notes.py index 2dfa73d6..cdf2c19a 100644 --- a/app/core/viewsets/notes.py +++ b/app/core/viewsets/notes.py @@ -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 diff --git a/app/core/viewsets/related_ticket.py b/app/core/viewsets/related_ticket.py index 11aeacc6..40c87652 100644 --- a/app/core/viewsets/related_ticket.py +++ b/app/core/viewsets/related_ticket.py @@ -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): diff --git a/app/core/viewsets/ticket.py b/app/core/viewsets/ticket.py index 4b0da8a4..aa8de9ff 100644 --- a/app/core/viewsets/ticket.py +++ b/app/core/viewsets/ticket.py @@ -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 diff --git a/app/core/viewsets/ticket_category.py b/app/core/viewsets/ticket_category.py index 1529e69b..86c9231a 100644 --- a/app/core/viewsets/ticket_category.py +++ b/app/core/viewsets/ticket_category.py @@ -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 diff --git a/app/core/viewsets/ticket_comment.py b/app/core/viewsets/ticket_comment.py index e7f6e82d..6320e62d 100644 --- a/app/core/viewsets/ticket_comment.py +++ b/app/core/viewsets/ticket_comment.py @@ -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 diff --git a/app/core/viewsets/ticket_comment_category.py b/app/core/viewsets/ticket_comment_category.py index a736e491..a609c316 100644 --- a/app/core/viewsets/ticket_comment_category.py +++ b/app/core/viewsets/ticket_comment_category.py @@ -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 diff --git a/app/core/viewsets/ticket_linked_item.py b/app/core/viewsets/ticket_linked_item.py index 74f5c39d..ab1cf042 100644 --- a/app/core/viewsets/ticket_linked_item.py +++ b/app/core/viewsets/ticket_linked_item.py @@ -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 diff --git a/app/itam/viewsets/device.py b/app/itam/viewsets/device.py index 8686ecdb..f5a62ce6 100644 --- a/app/itam/viewsets/device.py +++ b/app/itam/viewsets/device.py @@ -80,14 +80,24 @@ class ViewSet( ModelViewSet ): view_description = 'Physical Devices' + 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 diff --git a/app/itam/viewsets/device_model.py b/app/itam/viewsets/device_model.py index 97fef361..96dec80e 100644 --- a/app/itam/viewsets/device_model.py +++ b/app/itam/viewsets/device_model.py @@ -75,12 +75,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 diff --git a/app/itam/viewsets/device_operating_system.py b/app/itam/viewsets/device_operating_system.py index cbd1f42a..268aa2a7 100644 --- a/app/itam/viewsets/device_operating_system.py +++ b/app/itam/viewsets/device_operating_system.py @@ -181,12 +181,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 diff --git a/app/itam/viewsets/device_software.py b/app/itam/viewsets/device_software.py index bc282b54..6cd75486 100644 --- a/app/itam/viewsets/device_software.py +++ b/app/itam/viewsets/device_software.py @@ -168,21 +168,32 @@ 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'] + + return self.serializer_class if 'software_id' in self.kwargs: - return globals()['SoftwareInstallsModelSerializer'] + self.serializer_class = globals()['SoftwareInstallsModelSerializer'] else: - return globals()[str( self.model._meta.verbose_name).replace(' ', '') + 'ModelSerializer'] + self.serializer_class = globals()[str( self.model._meta.verbose_name).replace(' ', '') + 'ModelSerializer'] + + return self.serializer_class + + @property diff --git a/app/itam/viewsets/device_type.py b/app/itam/viewsets/device_type.py index 67b1e1f1..3066ffb8 100644 --- a/app/itam/viewsets/device_type.py +++ b/app/itam/viewsets/device_type.py @@ -74,12 +74,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 diff --git a/app/itam/viewsets/operating_system.py b/app/itam/viewsets/operating_system.py index 141e3eea..b7c099f1 100644 --- a/app/itam/viewsets/operating_system.py +++ b/app/itam/viewsets/operating_system.py @@ -76,12 +76,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 \ No newline at end of file diff --git a/app/itam/viewsets/operating_system_version.py b/app/itam/viewsets/operating_system_version.py index 9786fd4b..2897bc7d 100644 --- a/app/itam/viewsets/operating_system_version.py +++ b/app/itam/viewsets/operating_system_version.py @@ -141,12 +141,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 diff --git a/app/itam/viewsets/software.py b/app/itam/viewsets/software.py index a7f5858f..f406a86d 100644 --- a/app/itam/viewsets/software.py +++ b/app/itam/viewsets/software.py @@ -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) + '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) + 'ModelSerializer'] + return self.serializer_class diff --git a/app/itam/viewsets/software_category.py b/app/itam/viewsets/software_category.py index 71a1bd62..2587d08a 100644 --- a/app/itam/viewsets/software_category.py +++ b/app/itam/viewsets/software_category.py @@ -71,12 +71,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 diff --git a/app/itam/viewsets/software_version.py b/app/itam/viewsets/software_version.py index ecebbbfa..b9e454d1 100644 --- a/app/itam/viewsets/software_version.py +++ b/app/itam/viewsets/software_version.py @@ -139,12 +139,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 diff --git a/app/itim/viewsets/cluster.py b/app/itim/viewsets/cluster.py index aa60d6e8..0f3b9cae 100644 --- a/app/itim/viewsets/cluster.py +++ b/app/itim/viewsets/cluster.py @@ -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) + '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) + 'ModelSerializer'] + return self.serializer_class diff --git a/app/itim/viewsets/cluster_type.py b/app/itim/viewsets/cluster_type.py index 9d479311..d3c6d982 100644 --- a/app/itim/viewsets/cluster_type.py +++ b/app/itim/viewsets/cluster_type.py @@ -72,12 +72,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 diff --git a/app/itim/viewsets/port.py b/app/itim/viewsets/port.py index 36c759a9..688ef9d0 100644 --- a/app/itim/viewsets/port.py +++ b/app/itim/viewsets/port.py @@ -71,12 +71,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) + '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) + 'ModelSerializer'] + return self.serializer_class diff --git a/app/itim/viewsets/service.py b/app/itim/viewsets/service.py index 207c4d70..99f843e5 100644 --- a/app/itim/viewsets/service.py +++ b/app/itim/viewsets/service.py @@ -76,12 +76,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) + '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) + 'ModelSerializer'] + return self.serializer_class diff --git a/app/itim/viewsets/service_cluster.py b/app/itim/viewsets/service_cluster.py index 06cba615..4055287e 100644 --- a/app/itim/viewsets/service_cluster.py +++ b/app/itim/viewsets/service_cluster.py @@ -45,12 +45,21 @@ class ViewSet(ReadOnlyModelViewSet): 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 diff --git a/app/itim/viewsets/service_device.py b/app/itim/viewsets/service_device.py index 4d4cff86..e82e3949 100644 --- a/app/itim/viewsets/service_device.py +++ b/app/itim/viewsets/service_device.py @@ -45,12 +45,21 @@ class ViewSet(ReadOnlyModelViewSet): 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 diff --git a/app/project_management/viewsets/project.py b/app/project_management/viewsets/project.py index e47621a8..9983bd7a 100644 --- a/app/project_management/viewsets/project.py +++ b/app/project_management/viewsets/project.py @@ -80,6 +80,10 @@ class ViewSet( ModelViewSet ): def get_serializer_class(self): + if self.serializer_class: + + return self.serializer_class + organization = None if 'organization' in self.request.data: @@ -104,7 +108,9 @@ class ViewSet( ModelViewSet ): permissions_required = 'project_management.import_project' ) or self.request.user.is_superuser: - return globals()[str( self.model._meta.verbose_name) + 'ImportSerializer'] + self.serializer_class = globals()[str( self.model._meta.verbose_name) + 'ImportSerializer'] + + return self.serializer_class if ( @@ -112,7 +118,11 @@ class ViewSet( ModelViewSet ): or self.action == 'retrieve' ): - return globals()[str( self.model._meta.verbose_name) + 'ViewSerializer'] + self.serializer_class = globals()[str( self.model._meta.verbose_name) + 'ViewSerializer'] - return globals()[str( self.model._meta.verbose_name) + 'ModelSerializer'] + else: + + self.serializer_class = globals()[str( self.model._meta.verbose_name) + 'ModelSerializer'] + + return self.serializer_class diff --git a/app/project_management/viewsets/project_milestone.py b/app/project_management/viewsets/project_milestone.py index da19ab06..5f4e847d 100644 --- a/app/project_management/viewsets/project_milestone.py +++ b/app/project_management/viewsets/project_milestone.py @@ -131,12 +131,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 diff --git a/app/project_management/viewsets/project_state.py b/app/project_management/viewsets/project_state.py index 58b98321..93967b37 100644 --- a/app/project_management/viewsets/project_state.py +++ b/app/project_management/viewsets/project_state.py @@ -71,12 +71,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 diff --git a/app/project_management/viewsets/project_type.py b/app/project_management/viewsets/project_type.py index fb702ad2..63818d78 100644 --- a/app/project_management/viewsets/project_type.py +++ b/app/project_management/viewsets/project_type.py @@ -71,12 +71,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 diff --git a/app/settings/viewsets/app_settings.py b/app/settings/viewsets/app_settings.py index 2e161c39..e767acbe 100644 --- a/app/settings/viewsets/app_settings.py +++ b/app/settings/viewsets/app_settings.py @@ -70,12 +70,21 @@ class ViewSet(ModelRetrieveUpdateViewSet): 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 diff --git a/app/settings/viewsets/external_link.py b/app/settings/viewsets/external_link.py index b3e8ca01..e1869950 100644 --- a/app/settings/viewsets/external_link.py +++ b/app/settings/viewsets/external_link.py @@ -67,12 +67,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 diff --git a/app/settings/viewsets/user_settings.py b/app/settings/viewsets/user_settings.py index 8a5ad2d7..c2d52e8e 100644 --- a/app/settings/viewsets/user_settings.py +++ b/app/settings/viewsets/user_settings.py @@ -70,12 +70,21 @@ class ViewSet(ModelRetrieveUpdateViewSet): 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