You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
40 lines
1.5 KiB
40 lines
1.5 KiB
from constance import config
|
|
from constance.admin import get_values, ConstanceForm
|
|
from rest_framework import serializers
|
|
from rest_framework.fields import SkipField
|
|
from collections import OrderedDict
|
|
|
|
|
|
def _set_constance_value(key, value):
|
|
form = ConstanceForm(initial=get_values())
|
|
field = form.fields[key]
|
|
clean_value = field.clean(field.to_python(value))
|
|
setattr(config, key, clean_value)
|
|
|
|
|
|
class ConfigSerializer(serializers.Serializer):
|
|
SERVICE_COMMISSION = serializers.IntegerField(required=False)
|
|
SERVICE_DISCOUNT_MIN_AMOUNT = serializers.IntegerField(required=False)
|
|
SERVICE_DISCOUNT = serializers.IntegerField(required=False)
|
|
INSTAGRAM_CLIENT_ACCESS_TOKEN = serializers.CharField(required=False)
|
|
INSTAGRAM_CLIENT_SECRET = serializers.CharField(required=False)
|
|
INSTAGRAM_PROFILE_URL = serializers.CharField(required=False)
|
|
# SCHOOL_LOGO_IMAGE = serializers.ImageField(required=False)
|
|
|
|
def to_representation(self, instance):
|
|
ret = OrderedDict()
|
|
fields = self._readable_fields
|
|
for field in fields:
|
|
attribute = instance.get(field.field_name)
|
|
ret[field.field_name] = field.to_representation(attribute)
|
|
return ret
|
|
|
|
def to_internal_value(self, data):
|
|
ret = OrderedDict(get_values())
|
|
for k, v in data.items():
|
|
ret[k] = v
|
|
return ret
|
|
|
|
def update(self, instance, validated_data):
|
|
for k, v in validated_data.items():
|
|
_set_constance_value(k, v)
|
|
|