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.py45
1 files changed, 33 insertions, 12 deletions
diff --git a/ishtar_common/models.py b/ishtar_common/models.py
index 98f4addb7..c59f38674 100644
--- a/ishtar_common/models.py
+++ b/ishtar_common/models.py
@@ -561,10 +561,12 @@ class UserDashboard:
.order_by('person__person_types')
class Dashboard:
- def __init__(self, model, slice='year', date_source=None, fltr={}):
+ def __init__(self, model, slice='year', date_source=None, show_detail=None,
+ fltr={}):
# don't provide date_source if it is not relevant
self.model = model
self.total_number = model.get_total_number(fltr)
+ self.show_detail = show_detail
history_model = self.model.history.model
# last edited - created
self.recents, self.lasts = [], []
@@ -597,21 +599,40 @@ class Dashboard:
self.periods.sort()
if not self.total_number or not self.periods:
return
+ kwargs_num = base_kwargs.copy()
+ self.serie_labels = [_(u"Total")]
# numbers
if slice == 'year':
- self.values = [('year', _(u"Year"), reversed(self.periods))]
- self.numbers = [model.get_by_year(year, **base_kwargs).count()
+ self.values = [('year', "",
+ list(reversed(self.periods)))]
+ self.numbers = [model.get_by_year(year, **kwargs_num).count()
for year in self.periods]
- self.values += [('number', _(u"Number"), reversed(self.numbers))]
+ self.values += [('number', _(u"Number"),
+ list(reversed(self.numbers)))]
if slice == 'month':
- self.numbers = [model.get_by_month(*period, **base_kwargs).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))]
+ periods = list(reversed(self.periods))
+ self.periods = ["%d-%s-01" % (p[0], ('0'+str(p[1]))
+ if len(str(p[1])) == 1 else p[1])
+ for p in periods]
+ self.values = [('month', "", self.periods)]
+ if show_detail:
+ 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)}
+ numbers = [model.get_by_month(*p.split('-')[:2],
+ **kwargs_num).count()
+ for p in self.periods]
+ self.values += [(idx, dpt, list(numbers))]
+ # put "Total" at the end
+ self.serie_labels.append(self.serie_labels.pop(0))
+ kwargs_num['fltr'] = {}
+ self.numbers = [model.get_by_month(*p.split('-')[:2],
+ **kwargs_num).count()
+ for p in self.periods]
+ self.values += [('number', _(u"Total"),
+ list(self.numbers))]
# calculate
self.average = self.get_average()
self.variance = self.get_variance()