kpsul/kfet/config.py

41 lines
1.1 KiB
Python
Raw Normal View History

# -*- coding: utf-8 -*-
from django.core.exceptions import ValidationError
from djconfig import config
class KFetConfig(object):
"""kfet app configuration.
Enhance isolation with backend used to store config.
Usable after DjConfig middleware was called.
"""
prefix = 'kfet_'
def __getattr__(self, key):
return getattr(config, self.get_dj_key(key))
def list(self):
from kfet.forms import KFetConfigForm
return [(field.label, getattr(config, name), )
for name, field in KFetConfigForm.base_fields.items()]
def get_dj_key(self, key):
return '{}{}'.format(self.prefix, key)
def set_many(self, **kwargs):
from kfet.forms import KFetConfigForm
new_cfg = KFetConfigForm().initial
new_cfg.update({self.get_dj_key(key): value
for key, value in kwargs.items()})
cfg_form = KFetConfigForm(new_cfg)
if cfg_form.is_valid():
cfg_form.save()
else:
raise ValidationError()
kfet_config = KFetConfig()