From e12ad67ee448c736e25c86a00f88dea31bc7b572 Mon Sep 17 00:00:00 2001 From: lagos Date: Fri, 11 Jan 2013 01:14:28 -0800 Subject: [PATCH] Correctly flushes entire SharedMemoryModel class hierarchy. --- src/utils/idmapper/base.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/utils/idmapper/base.py b/src/utils/idmapper/base.py index dc7479751c..d56948c57f 100755 --- a/src/utils/idmapper/base.py +++ b/src/utils/idmapper/base.py @@ -170,7 +170,13 @@ class SharedMemoryModel(Model): # Use a signal so we make sure to catch cascades. def flush_cache(**kwargs): - for model in SharedMemoryModel.__subclasses__(): + def class_hierarchy(root): + """Recursively yield a class hierarchy.""" + yield root + for subcls in root.__subclasses__(): + for cls in class_hierarchy(subcls): + yield cls + for model in class_hierarchy(SharedMemoryModel): model.flush_instance_cache() #request_finished.connect(flush_cache) post_syncdb.connect(flush_cache)