summaryrefslogtreecommitdiff
path: root/ishtar_common
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2019-03-18 19:48:55 +0100
committerÉtienne Loks <etienne.loks@iggdrasil.net>2019-06-17 13:21:27 +0200
commite2ec8a3bf016f1cc1e86a9ddd8cfc6e4eadbc35f (patch)
tree45e9ef5617a75ecdbe9f3dab0e6d8be095b69e79 /ishtar_common
parente50b4030deb722c3c7d2ba79a7b7d0545ccd24f8 (diff)
downloadIshtar-e2ec8a3bf016f1cc1e86a9ddd8cfc6e4eadbc35f.tar.bz2
Ishtar-e2ec8a3bf016f1cc1e86a9ddd8cfc6e4eadbc35f.zip
Fix stats cache for integer values
Diffstat (limited to 'ishtar_common')
-rw-r--r--ishtar_common/models.py24
-rw-r--r--ishtar_common/tests.py1
2 files changed, 20 insertions, 5 deletions
diff --git a/ishtar_common/models.py b/ishtar_common/models.py
index adad232d5..06d706cdd 100644
--- a/ishtar_common/models.py
+++ b/ishtar_common/models.py
@@ -2782,10 +2782,15 @@ class StatsCache(models.Model):
def update_stats(statscache, item, funcname):
if not settings.USE_BACKGROUND_TASK:
- statscache.values = getattr(item, funcname)()
+ raw_value = getattr(item, funcname)()
+ if not isinstance(raw_value, dict):
+ values = {"_raw_": raw_value}
+ else:
+ values = raw_value
+ statscache.values = values
statscache.updated = datetime.datetime.now()
statscache.save()
- return statscache.values
+ return values
now = datetime.datetime.now()
if statscache.update_requested and (
@@ -2810,7 +2815,12 @@ def _update_stats(app, model, model_pk, funcname):
item = model.objects.get(pk=model_pk)
except model.DoesNotExist:
return
- sc.values = getattr(item, funcname)()
+ raw_value = getattr(item, funcname)()
+ if not isinstance(raw_value, dict):
+ values = {"_raw_": raw_value}
+ else:
+ values = raw_value
+ sc.values = values
sc.update_requested = None
sc.updated = datetime.datetime.now()
sc.save()
@@ -2833,8 +2843,12 @@ class DashboardFormItem(object):
now = datetime.datetime.now()
if sc.values and (
sc.updated + datetime.timedelta(seconds=timeout)) > now:
- return sc.values
- return update_stats(sc, self, funcname)
+ values = sc.values
+ else:
+ values = update_stats(sc, self, funcname)
+ if "_raw_" in values:
+ return values["_raw_"]
+ return values
@classmethod
def get_periods(cls, slice='month', fltr={}, date_source='creation'):
diff --git a/ishtar_common/tests.py b/ishtar_common/tests.py
index 07fa08750..36df516ec 100644
--- a/ishtar_common/tests.py
+++ b/ishtar_common/tests.py
@@ -1363,6 +1363,7 @@ class ShortMenuTest(TestCase):
# available because is the creator
tf.history_creator = self.user
tf.save()
+ tf = TreatmentFile.objects.get(pk=tf.pk)
response = c.get(reverse('shortcut-menu'))
self.assertEqual(response.status_code, 200)
self.assertTrue(str(tf.cached_label) in response.content.decode())