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/models.py | |
| parent | e50b4030deb722c3c7d2ba79a7b7d0545ccd24f8 (diff) | |
| download | Ishtar-e2ec8a3bf016f1cc1e86a9ddd8cfc6e4eadbc35f.tar.bz2 Ishtar-e2ec8a3bf016f1cc1e86a9ddd8cfc6e4eadbc35f.zip | |
Fix stats cache for integer values
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'): | 
