diff options
Diffstat (limited to 'ishtar_common/models.py')
-rw-r--r-- | ishtar_common/models.py | 24 |
1 files changed, 19 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'): |