summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorMichael Wood <michael.g.wood@intel.com>2015-05-19 16:10:19 +0100
committerRichard Purdie <richard.purdie@linuxfoundation.org>2015-05-29 11:58:25 +0100
commiteb0b1450e421cf65b407b1ac0336ac24ffc626e8 (patch)
tree281dbcf41b7f21193a181ae3f0b6fecb63e8a9cd /lib
parent8ce35f81631e31539aeb82f8a85abbb3312e5097 (diff)
downloadbitbake-contrib-eb0b1450e421cf65b407b1ac0336ac24ffc626e8.tar.gz
toaster: Add an invalidate cache method on data update signal
Instead of relying on the cache expiring over an amount of time we can listen to the changed notification on the models to invalidate the cache. Also fixes overlapping cache names. Signed-off-by: Michael Wood <michael.g.wood@intel.com>
Diffstat (limited to 'lib')
-rw-r--r--lib/toaster/orm/models.py12
-rw-r--r--lib/toaster/toastergui/tables.py5
-rw-r--r--lib/toaster/toastergui/widgets.py6
3 files changed, 16 insertions, 7 deletions
diff --git a/lib/toaster/orm/models.py b/lib/toaster/orm/models.py
index 0f725764d..fb62a55d7 100644
--- a/lib/toaster/orm/models.py
+++ b/lib/toaster/orm/models.py
@@ -26,6 +26,7 @@ from django.utils import timezone
from django.core import validators
from django.conf import settings
+import django.db.models.signals
class GitURLValidator(validators.URLValidator):
import re
@@ -1176,3 +1177,14 @@ class LogMessage(models.Model):
message=models.CharField(max_length=240)
pathname = models.FilePathField(max_length=255, blank=True)
lineno = models.IntegerField(null=True)
+
+def invalidate_cache(**kwargs):
+ from django.core.cache import cache
+ try:
+ cache.clear()
+ except Exception as e:
+ print "Problem with cache backend: Failed to clear cache"
+ pass
+
+django.db.models.signals.post_save.connect(invalidate_cache)
+django.db.models.signals.post_delete.connect(invalidate_cache)
diff --git a/lib/toaster/toastergui/tables.py b/lib/toaster/toastergui/tables.py
index 78a7cb095..9a93ff9aa 100644
--- a/lib/toaster/toastergui/tables.py
+++ b/lib/toaster/toastergui/tables.py
@@ -323,11 +323,6 @@ class LayerRecipesTable(RecipesTable):
-
-
-
-
-
# This needs to be staticaly defined here as django reads the url patterns
# on start up
urlpatterns = (
diff --git a/lib/toaster/toastergui/widgets.py b/lib/toaster/toastergui/widgets.py
index b5dfbbc03..8cf6e1bc2 100644
--- a/lib/toaster/toastergui/widgets.py
+++ b/lib/toaster/toastergui/widgets.py
@@ -245,6 +245,9 @@ class ToasterTable(View):
for key, val in request.GET.iteritems():
cache_name = cache_name + str(key) + str(val)
+ for key, val in kwargs.iteritems():
+ cache_name = cache_name + str(key) + str(val)
+
data = cache.get(cache_name)
if data:
@@ -306,8 +309,7 @@ class ToasterTable(View):
except FieldError:
print "Error: Requested field does not exist"
-
data = json.dumps(data, indent=2, cls=DjangoJSONEncoder)
- cache.set(cache_name, data, 10)
+ cache.set(cache_name, data, 60*30)
return data