Add settings class cache invalidation method. Update common.tests.base.BaseTestCase

class to invalidate settings cache. Update tests using Django's TestCase to
BaseTestCase.
This commit is contained in:
Roberto Rosario
2017-01-14 00:13:35 -04:00
parent 53d356d992
commit 4e7559d396
14 changed files with 105 additions and 50 deletions
+24 -12
View File
@@ -16,14 +16,6 @@ logger = logging.getLogger(__name__)
class Namespace(object):
_registry = {}
@classmethod
def get_all(cls):
return cls._registry.values()
@classmethod
def get(cls, name):
return cls._registry[name]
@staticmethod
def initialize():
for app in apps.get_app_configs():
@@ -36,6 +28,19 @@ class Namespace(object):
'Imported settings.py file for app %s', app.name
)
@classmethod
def get_all(cls):
return cls._registry.values()
@classmethod
def get(cls, name):
return cls._registry[name]
@classmethod
def invalidate_cache_all(cls):
for namespace in cls.get_all():
namespace.invalidate_cache()
def __unicode__(self):
return unicode(self.label)
@@ -52,8 +57,16 @@ class Namespace(object):
def add_setting(self, **kwargs):
return Setting(namespace=self, **kwargs)
def invalidate_cache(self):
for setting in self.settings:
setting.invalidate_cache()
class Setting(object):
@staticmethod
def deserialize_value(value):
return yaml.safe_load(value)
@staticmethod
def serialize_value(value):
if isinstance(value, Promise):
@@ -61,10 +74,6 @@ class Setting(object):
return yaml.safe_dump(value, allow_unicode=True)
@staticmethod
def deserialize_value(value):
return yaml.safe_load(value)
def __init__(self, namespace, global_name, default, help_text=None, is_path=False):
self.global_name = global_name
self.default = default
@@ -75,6 +84,9 @@ class Setting(object):
def __unicode__(self):
return unicode(self.global_name)
def invalidate_cache(self):
self.loaded = False
@property
def serialized_value(self):
return self.yaml