# -*- 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()