parent
d8da3dd7e6
commit
883dfda147
3 changed files with 64 additions and 3 deletions
@ -0,0 +1,38 @@ |
||||
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): |
||||
INSTAGRAM_CLIENT_ACCESS_TOKEN = serializers.CharField(required=False) |
||||
INSTAGRAM_CLIENT_SECRET = serializers.CharField(required=False) |
||||
INSTAGRAM_RESULTS_TAG = serializers.CharField(required=False) |
||||
INSTAGRAM_RESULTS_PATH = serializers.CharField(required=False) |
||||
SERVICE_COMMISSION = serializers.IntegerField(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) |
||||
Loading…
Reference in new issue