Add some state management methods to AppCache.
This commit is contained in:
parent
b546e7eb63
commit
7e81213b5a
|
@ -244,6 +244,37 @@ class AppCache(object):
|
||||||
model_dict[model_name] = model
|
model_dict[model_name] = model
|
||||||
self._get_models_cache.clear()
|
self._get_models_cache.clear()
|
||||||
|
|
||||||
|
def save_state(self):
|
||||||
|
"""
|
||||||
|
Returns an object that contains the current AppCache state.
|
||||||
|
Can be provided to restore_state to undo actions.
|
||||||
|
"""
|
||||||
|
return {
|
||||||
|
"app_store": SortedDict(self.app_store.items()),
|
||||||
|
"app_labels": dict(self.app_errors.items()),
|
||||||
|
"app_models": SortedDict(self.app_models.items()),
|
||||||
|
"app_errors": dict(self.app_errors.items()),
|
||||||
|
}
|
||||||
|
|
||||||
|
def restore_state(self, state):
|
||||||
|
"""
|
||||||
|
Restores the AppCache to a previous state from save_state.
|
||||||
|
"""
|
||||||
|
self.app_store = state['app_store']
|
||||||
|
self.app_labels = state['app_labels']
|
||||||
|
self.app_models = state['app_models']
|
||||||
|
self.app_errors = state['app_errors']
|
||||||
|
|
||||||
|
def unregister_all(self):
|
||||||
|
"""
|
||||||
|
Wipes the AppCache clean of all registered models.
|
||||||
|
Used for things like migration libraries' fake ORMs.
|
||||||
|
"""
|
||||||
|
self.app_store = SortedDict()
|
||||||
|
self.app_labels = {}
|
||||||
|
self.app_models = SortedDict()
|
||||||
|
self.app_errors = {}
|
||||||
|
|
||||||
cache = AppCache()
|
cache = AppCache()
|
||||||
|
|
||||||
# These methods were always module level, so are kept that way for backwards
|
# These methods were always module level, so are kept that way for backwards
|
||||||
|
|
Loading…
Reference in New Issue