Include 'setting type' in API data

This commit is contained in:
Oliver 2021-11-09 17:07:41 +11:00
parent 0374c27d7c
commit 07851f0b2c
3 changed files with 34 additions and 7 deletions

View File

@ -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:

View File

@ -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):

View File

@ -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',
]