diff options
| author | Étienne Loks <etienne.loks@proxience.com> | 2014-10-21 12:15:37 +0200 | 
|---|---|---|
| committer | Étienne Loks <etienne.loks@proxience.com> | 2014-10-21 12:15:37 +0200 | 
| commit | f36eea6930e2828bce44c2afd4f588fd2e435658 (patch) | |
| tree | 6aa0f991b07d805414ff98a19fcb818fa0c43a14 | |
| parent | 09c42c835994ce97370014c902a009953a1a4a02 (diff) | |
| download | Ishtar-f36eea6930e2828bce44c2afd4f588fd2e435658.tar.bz2 Ishtar-f36eea6930e2828bce44c2afd4f588fd2e435658.zip | |
Dashboards: fix SQL queries for graphs
| -rw-r--r-- | ishtar_common/models.py | 15 | 
1 files changed, 8 insertions, 7 deletions
| diff --git a/ishtar_common/models.py b/ishtar_common/models.py index 8d96e0894..3df557806 100644 --- a/ishtar_common/models.py +++ b/ishtar_common/models.py @@ -25,6 +25,7 @@ import datetime  from PIL import Image  import os  import tempfile +import copy  from django.conf import settings  from django.core.exceptions import ObjectDoesNotExist, ValidationError @@ -582,7 +583,7 @@ class DashboardFormItem(object):          q = cls.objects.filter(**{date_var+'__isnull':False})          if fltr:              q = q.filter(**fltr) -        return q.filter(**{date_var+'__year':year}) +        return q.filter(**{date_var+'__year':year}).distinct('pk')      @classmethod      def get_by_month(cls, year, month, fltr={}, date_source='creation'): @@ -591,14 +592,14 @@ class DashboardFormItem(object):          if fltr:              q = q.filter(**fltr)          q = q.filter(**{date_var+'__year':year, date_var+'__month':month}) -        return q +        return q.distinct('pk')      @classmethod      def get_total_number(cls, fltr={}):          q = cls.objects          if fltr:              q = q.filter(**fltr) -        return q.count() +        return q.distinct('pk').count()  class Dashboard:      def __init__(self, model, slice='year', date_source=None, show_detail=None, @@ -632,14 +633,14 @@ class Dashboard:          base_kwargs = {'fltr':fltr.copy()}          if date_source:              base_kwargs['date_source'] = date_source -        periods_kwargs = base_kwargs.copy() +        periods_kwargs = copy.deepcopy(base_kwargs)          periods_kwargs['slice'] = slice          self.periods = model.get_periods(**periods_kwargs)          self.periods = list(set(self.periods))          self.periods.sort()          if not self.total_number or not self.periods:              return -        kwargs_num = base_kwargs.copy() +        kwargs_num = copy.deepcopy(base_kwargs)          self.serie_labels = [_(u"Total")]          # numbers          if slice == 'year': @@ -659,8 +660,8 @@ class Dashboard:                  for dpt in settings.ISHTAR_DPTS:                      self.serie_labels.append(unicode(dpt))                      idx = 'number_' + unicode(dpt) -                    kwargs_num['fltr'] = {"towns__numero_insee__startswith":\ -                                          unicode(dpt)} +                    kwargs_num['fltr']["towns__numero_insee__startswith"] = \ +                                                                 unicode(dpt)                      numbers = [model.get_by_month(*p.split('-')[:2],                                                    **kwargs_num).count()                                  for p in self.periods] | 
