diff options
Diffstat (limited to 'ishtar_common/models.py')
| -rw-r--r-- | ishtar_common/models.py | 30 | 
1 files changed, 21 insertions, 9 deletions
| diff --git a/ishtar_common/models.py b/ishtar_common/models.py index 5c6e208d7..39bb4aeb0 100644 --- a/ishtar_common/models.py +++ b/ishtar_common/models.py @@ -561,9 +561,9 @@ class UserDashboard:                            .order_by('person__person_types')  class Dashboard: -    def __init__(self, model): +    def __init__(self, model, slice='year', fltr={}):          self.model = model -        self.total_number = model.get_total_number() +        self.total_number = model.get_total_number(fltr)          history_model = self.model.history.model          # last edited - created          self.recents, self.lasts = [], [] @@ -586,14 +586,26 @@ class Dashboard:                  obj.history_date = idx['hd']                  last_lst.append(obj)          # years -        self.years = model.get_years() -        self.years.sort() -        if not self.total_number or not self.years: +        self.periods = model.get_periods(slice=slice, fltr=fltr) +        self.periods = list(set(self.periods)) +        self.periods.sort() +        if not self.total_number or not self.periods:              return -        self.values = [('year', _(u"Year"), reversed(self.years))]          # numbers -        self.numbers = [model.get_by_year(year).count() for year in self.years] -        self.values += [('number', _(u"Number"), reversed(self.numbers))] +        if slice == 'year': +            self.values = [('year', _(u"Year"), reversed(self.periods))] +            self.numbers = [model.get_by_year(year, fltr=fltr).count() +                            for year in self.periods] +            self.values += [('number', _(u"Number"), reversed(self.numbers))] +        if slice == 'month': +            self.numbers = [model.get_by_month(*period, fltr=fltr).count() +                            for period in self.periods] +            periods = reversed(self.periods) +            self.periods = ["%d-%s-01" % (period[0], ('0'+str(period[1])) +                    if len(str(period[1])) == 1 else period[1]) +                            for period in periods] +            self.values = [('month', _(u"Month"), self.periods)] +            self.values += [('number', _(u"Number"), reversed(self.numbers))]          # calculate          self.average = self.get_average()          self.variance = self.get_variance() @@ -647,7 +659,7 @@ class Dashboard:      def get_mode(self, vals={}):          if not vals: -            vals = dict(zip(self.years, self.numbers)) +            vals = dict(zip(self.periods, self.numbers))          mx = max(vals.values())          for v in vals:              if vals[v] == mx: | 
