From 22011faba965a98768874e200d8b6a088f5084b0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aur=C3=A9lien=20Delobelle?= Date: Tue, 2 Oct 2018 12:02:24 +0200 Subject: [PATCH] kfet -- Init KFetConfig, even without request, for easy testing --- kfet/config.py | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) 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