From eb3c8dd255c5b89ddd7ddb5f251bc9988f47a470 Mon Sep 17 00:00:00 2001 From: Oliver Date: Tue, 28 May 2024 00:34:59 +1000 Subject: [PATCH] Handle case where serializer does not have 'Meta' class (#7360) --- src/backend/InvenTree/InvenTree/metadata.py | 15 ++++++++------- src/backend/InvenTree/plugin/serializers.py | 20 ++++++++++++++++++++ 2 files changed, 28 insertions(+), 7 deletions(-) diff --git a/src/backend/InvenTree/InvenTree/metadata.py b/src/backend/InvenTree/InvenTree/metadata.py index 36edbde6b8..19404f46b2 100644 --- a/src/backend/InvenTree/InvenTree/metadata.py +++ b/src/backend/InvenTree/InvenTree/metadata.py @@ -147,14 +147,15 @@ class InvenTreeMetadata(SimpleMetadata): serializer_info = super().get_serializer_info(serializer) # Look for any dynamic fields which were not available when the serializer was instantiated - for field_name in serializer.Meta.fields: - if field_name in serializer_info: - # Already know about this one - continue + if hasattr(serializer, 'Meta'): + for field_name in serializer.Meta.fields: + if field_name in serializer_info: + # Already know about this one + continue - if hasattr(serializer, field_name): - field = getattr(serializer, field_name) - serializer_info[field_name] = self.get_field_info(field) + if hasattr(serializer, field_name): + field = getattr(serializer, field_name) + serializer_info[field_name] = self.get_field_info(field) model_class = None diff --git a/src/backend/InvenTree/plugin/serializers.py b/src/backend/InvenTree/plugin/serializers.py index ffe9b066e2..aa4deffa1a 100644 --- a/src/backend/InvenTree/plugin/serializers.py +++ b/src/backend/InvenTree/plugin/serializers.py @@ -150,6 +150,11 @@ class PluginConfigEmptySerializer(serializers.Serializer): class PluginReloadSerializer(serializers.Serializer): """Serializer for remotely forcing plugin registry reload.""" + class Meta: + """Meta for serializer.""" + + fields = ['full_reload', 'force_reload', 'collect_plugins'] + full_reload = serializers.BooleanField( required=False, default=False, @@ -189,6 +194,11 @@ class PluginActivateSerializer(serializers.Serializer): model = PluginConfig + class Meta: + """Metaclass for serializer.""" + + fields = ['active'] + active = serializers.BooleanField( required=False, default=True, @@ -213,6 +223,11 @@ class PluginActivateSerializer(serializers.Serializer): class PluginUninstallSerializer(serializers.Serializer): """Serializer for uninstalling a plugin.""" + class Meta: + """Metaclass for serializer.""" + + fields = ['delete_config'] + delete_config = serializers.BooleanField( required=False, default=True, @@ -253,6 +268,11 @@ class NotificationUserSettingSerializer(GenericReferencedSettingSerializer): class PluginRegistryErrorSerializer(serializers.Serializer): """Serializer for a plugin registry error.""" + class Meta: + """Meta for serializer.""" + + fields = ['stage', 'name', 'message'] + stage = serializers.CharField() name = serializers.CharField() message = serializers.CharField()