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.py44
1 files changed, 42 insertions, 2 deletions
diff --git a/ishtar_common/models.py b/ishtar_common/models.py
index c59f38674..8d96e0894 100644
--- a/ishtar_common/models.py
+++ b/ishtar_common/models.py
@@ -560,6 +560,46 @@ class UserDashboard:
self.types = types.annotate(number=Count('pk'))\
.order_by('person__person_types')
+class DashboardFormItem(object):
+ @classmethod
+ def get_periods(cls, slice='month', fltr={}, date_source='creation'):
+ date_var = date_source + '_date'
+ q = cls.objects.filter(**{date_var+'__isnull':False})
+ if fltr:
+ q = q.filter(**fltr)
+ if slice == 'year':
+ return [res[date_var].year for res in list(q.values(date_var
+ ).annotate(Count("id")).order_by())]
+ elif slice == 'month':
+ return [(res[date_var].year, res[date_var].month)
+ for res in list(q.values(date_var
+ ).annotate(Count("id")).order_by())]
+ return []
+
+ @classmethod
+ def get_by_year(cls, year, fltr={}, date_source='creation'):
+ date_var = date_source + '_date'
+ q = cls.objects.filter(**{date_var+'__isnull':False})
+ if fltr:
+ q = q.filter(**fltr)
+ return q.filter(**{date_var+'__year':year})
+
+ @classmethod
+ def get_by_month(cls, year, month, fltr={}, date_source='creation'):
+ date_var = date_source + '_date'
+ q = cls.objects.filter(**{date_var+'__isnull':False})
+ if fltr:
+ q = q.filter(**fltr)
+ q = q.filter(**{date_var+'__year':year, date_var+'__month':month})
+ return q
+
+ @classmethod
+ def get_total_number(cls, fltr={}):
+ q = cls.objects
+ if fltr:
+ q = q.filter(**fltr)
+ return q.count()
+
class Dashboard:
def __init__(self, model, slice='year', date_source=None, show_detail=None,
fltr={}):
@@ -589,7 +629,7 @@ class Dashboard:
obj.history_date = idx['hd']
last_lst.append(obj)
# years
- base_kwargs = {'fltr':fltr}
+ base_kwargs = {'fltr':fltr.copy()}
if date_source:
base_kwargs['date_source'] = date_source
periods_kwargs = base_kwargs.copy()
@@ -627,7 +667,7 @@ class Dashboard:
self.values += [(idx, dpt, list(numbers))]
# put "Total" at the end
self.serie_labels.append(self.serie_labels.pop(0))
- kwargs_num['fltr'] = {}
+ kwargs_num = base_kwargs.copy()
self.numbers = [model.get_by_month(*p.split('-')[:2],
**kwargs_num).count()
for p in self.periods]