From 07851f0b2c121ef59fa98b67d2fd7b01d11430d9 Mon Sep 17 00:00:00 2001 From: Oliver Date: Tue, 9 Nov 2021 17:07:41 +1100 Subject: [PATCH] Include 'setting type' in API data --- InvenTree/common/api.py | 3 --- InvenTree/common/models.py | 24 ++++++++++++++++++++++++ InvenTree/common/serializers.py | 14 ++++++++++---- 3 files changed, 34 insertions(+), 7 deletions(-) diff --git a/InvenTree/common/api.py b/InvenTree/common/api.py index a89b49bce0..fe28cdbe57 100644 --- a/InvenTree/common/api.py +++ b/InvenTree/common/api.py @@ -107,9 +107,6 @@ class UserSettingsPermissions(permissions.BasePermission): def has_object_permission(self, request, view, obj): - print("Checking object permissions:") - print(request.user, obj.user) - try: user = request.user except AttributeError: diff --git a/InvenTree/common/models.py b/InvenTree/common/models.py index cb1e9217f2..43de6767bd 100644 --- a/InvenTree/common/models.py +++ b/InvenTree/common/models.py @@ -45,6 +45,16 @@ class BaseInvenTreeSetting(models.Model): class Meta: abstract = True + def save(self, *args, **kwargs): + """ + Enforce validation and clean before saving + """ + + self.clean() + self.validate_unique() + + super().save() + @classmethod def allValues(cls, user=None): """ @@ -427,6 +437,20 @@ class BaseInvenTreeSetting(models.Model): return InvenTree.helpers.str2bool(self.value) + def setting_type(self): + """ + Return the field type identifier for this setting object + """ + + if self.is_bool(): + return 'boolean' + + elif self.is_int(): + return 'integer' + + else: + return 'string' + @classmethod def validator_is_bool(cls, validator): diff --git a/InvenTree/common/serializers.py b/InvenTree/common/serializers.py index 87db97cc92..85908872f8 100644 --- a/InvenTree/common/serializers.py +++ b/InvenTree/common/serializers.py @@ -16,11 +16,13 @@ class GlobalSettingsSerializer(InvenTreeModelSerializer): Serializer for the InvenTreeSetting model """ + key = serializers.CharField(read_only=True) + name = serializers.CharField(read_only=True) description = serializers.CharField(read_only=True) - # choices = serializers.CharField(read_only=True, many=True) + type = serializers.CharField(source='setting_type', read_only=True) class Meta: model = InvenTreeSetting @@ -30,7 +32,7 @@ class GlobalSettingsSerializer(InvenTreeModelSerializer): 'value', 'name', 'description', - # 'type', + 'type', ] @@ -39,11 +41,15 @@ class UserSettingsSerializer(InvenTreeModelSerializer): Serializer for the InvenTreeUserSetting model """ + key = serializers.CharField(read_only=True) + name = serializers.CharField(read_only=True) description = serializers.CharField(read_only=True) - # choices = serializers.CharField(read_only=True, many=True) + user = serializers.PrimaryKeyRelatedField(read_only=True) + + type = serializers.CharField(source='setting_type', read_only=True) class Meta: model = InvenTreeUserSetting @@ -54,5 +60,5 @@ class UserSettingsSerializer(InvenTreeModelSerializer): 'name', 'description', 'user', - # 'type', + 'type', ]