diff options
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 |
commit | e2ec8a3bf016f1cc1e86a9ddd8cfc6e4eadbc35f (patch) | |
tree | 45e9ef5617a75ecdbe9f3dab0e6d8be095b69e79 /ishtar_common | |
parent | e50b4030deb722c3c7d2ba79a7b7d0545ccd24f8 (diff) | |
download | Ishtar-e2ec8a3bf016f1cc1e86a9ddd8cfc6e4eadbc35f.tar.bz2 Ishtar-e2ec8a3bf016f1cc1e86a9ddd8cfc6e4eadbc35f.zip |
Fix stats cache for integer values
Diffstat (limited to 'ishtar_common')
-rw-r--r-- | ishtar_common/models.py | 24 | ||||
-rw-r--r-- | ishtar_common/tests.py | 1 |
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()) |