summaryrefslogtreecommitdiff
path: root/ishtar_common/models.py
diff options
context:
space:
mode:
Diffstat (limited to 'ishtar_common/models.py')
-rw-r--r--ishtar_common/models.py30
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: