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: |