From 324335a62021cee9c2a4b26f41fec17eddf67f09 Mon Sep 17 00:00:00 2001 From: Oliver Date: Tue, 9 Nov 2021 17:43:36 +1100 Subject: [PATCH] Convert to "native value" in the serializer --- InvenTree/common/models.py | 16 ++++++++++++++ InvenTree/common/serializers.py | 38 +++++++++++++++------------------ 2 files changed, 33 insertions(+), 21 deletions(-) diff --git a/InvenTree/common/models.py b/InvenTree/common/models.py index a941499f7e..c3add3b95a 100644 --- a/InvenTree/common/models.py +++ b/InvenTree/common/models.py @@ -909,6 +909,14 @@ class InvenTreeSetting(BaseInvenTreeSetting): help_text=_('Settings key (must be unique - case insensitive'), ) + def to_native_value(self): + """ + Return the "pythonic" value, + e.g. convert "True" to True, and "1" to 1 + """ + + return self.__class__.get_setting(self.key) + class InvenTreeUserSetting(BaseInvenTreeSetting): """ @@ -1119,6 +1127,14 @@ class InvenTreeUserSetting(BaseInvenTreeSetting): 'user__id': kwargs['user'].id } + def to_native_value(self): + """ + Return the "pythonic" value, + e.g. convert "True" to True, and "1" to 1 + """ + + return self.__class__.get_setting(self.key, user=self.user) + class PriceBreak(models.Model): """ diff --git a/InvenTree/common/serializers.py b/InvenTree/common/serializers.py index ed120917cf..8121681bdf 100644 --- a/InvenTree/common/serializers.py +++ b/InvenTree/common/serializers.py @@ -11,9 +11,10 @@ from rest_framework import serializers from common.models import InvenTreeSetting, InvenTreeUserSetting -class GlobalSettingsSerializer(InvenTreeModelSerializer): + +class SettingsSerializer(InvenTreeModelSerializer): """ - Serializer for the InvenTreeSetting model + Base serializer for a settings object """ key = serializers.CharField(read_only=True) @@ -26,13 +27,25 @@ class GlobalSettingsSerializer(InvenTreeModelSerializer): choices = serializers.SerializerMethodField() - def get_choices(self, obj: InvenTreeUserSetting): + def get_choices(self, obj): """ Returns the choices available for a given item """ return obj.choices() + value = serializers.SerializerMethodField() + + def get_value(self, obj): + + return obj.to_native_value() + + +class GlobalSettingsSerializer(SettingsSerializer): + """ + Serializer for the InvenTreeSetting model + """ + class Meta: model = InvenTreeSetting fields = [ @@ -46,30 +59,13 @@ class GlobalSettingsSerializer(InvenTreeModelSerializer): ] -class UserSettingsSerializer(InvenTreeModelSerializer): +class UserSettingsSerializer(SettingsSerializer): """ Serializer for the InvenTreeUserSetting model """ - key = serializers.CharField(read_only=True) - - name = serializers.CharField(read_only=True) - - description = serializers.CharField(read_only=True) - user = serializers.PrimaryKeyRelatedField(read_only=True) - type = serializers.CharField(source='setting_type', read_only=True) - - choices = serializers.SerializerMethodField() - - def get_choices(self, obj: InvenTreeUserSetting): - """ - Returns the choices available for a given item - """ - - return obj.choices() - class Meta: model = InvenTreeUserSetting fields = [