diff --git a/kfet/config.py b/kfet/config.py index f248b370..452c2a09 100644 --- a/kfet/config.py +++ b/kfet/config.py @@ -1,25 +1,39 @@ from django.core.exceptions import ValidationError from django.db import models -from djconfig import config +import djconfig class KFetConfig(object): """kfet app configuration. Enhance isolation with backend used to store config. - Usable after DjConfig middleware was called. """ prefix = 'kfet_' + def __init__(self): + # Set this to False again to reload the config, e.g for testing + # purposes. + self._conf_init = False + + def _check_init(self): + # For initialization purposes, we call 'reload_maybe' directly + # (normaly done once per request in middleware). + # Note it should be called only once across requests, if you use + # kfet_config instance below. + if not self._conf_init: + djconfig.reload_maybe() + self._conf_init = True + def __getattr__(self, key): + self._check_init() if key == 'subvention_cof': # Allows accessing to the reduction as a subvention # Other reason: backward compatibility reduction_mult = 1 - self.reduction_cof/100 return (1/reduction_mult - 1) * 100 - return getattr(config, self._get_dj_key(key)) + return getattr(djconfig.config, self._get_dj_key(key)) def list(self): """Get list of kfet app configuration. @@ -30,7 +44,8 @@ class KFetConfig(object): """ # prevent circular imports from kfet.forms import KFetConfigForm - return [(field.label, getattr(config, name), ) + self._check_init() + return [(field.label, getattr(djconfig.config, name), ) for name, field in KFetConfigForm.base_fields.items()] def _get_dj_key(self, key): @@ -47,6 +62,7 @@ class KFetConfig(object): # prevent circular imports from kfet.forms import KFetConfigForm + self._check_init() # get old config new_cfg = KFetConfigForm().initial # update to new config