diff options
author | Étienne Loks <etienne.loks@proxience.com> | 2014-10-16 20:34:20 +0200 |
---|---|---|
committer | Étienne Loks <etienne.loks@proxience.com> | 2014-10-16 20:34:20 +0200 |
commit | 5134f84b99674294d60d90d74ca979afd2ee40ec (patch) | |
tree | d1dd7549f0a9d11e1170157ed1700f9930caf91d /ishtar_common | |
parent | e7ba80e10c861b3e2222cc43c9a399d76b59a48f (diff) | |
download | Ishtar-5134f84b99674294d60d90d74ca979afd2ee40ec.tar.bz2 Ishtar-5134f84b99674294d60d90d74ca979afd2ee40ec.zip |
Dashboards - graphs: allow to choose source of the date (creation or reception)
Diffstat (limited to 'ishtar_common')
-rw-r--r-- | ishtar_common/models.py | 14 | ||||
-rw-r--r-- | ishtar_common/views.py | 12 |
2 files changed, 19 insertions, 7 deletions
diff --git a/ishtar_common/models.py b/ishtar_common/models.py index 0280a8fd7..98f4addb7 100644 --- a/ishtar_common/models.py +++ b/ishtar_common/models.py @@ -561,7 +561,8 @@ class UserDashboard: .order_by('person__person_types') class Dashboard: - def __init__(self, model, slice='year', fltr={}): + def __init__(self, model, slice='year', date_source=None, fltr={}): + # don't provide date_source if it is not relevant self.model = model self.total_number = model.get_total_number(fltr) history_model = self.model.history.model @@ -586,7 +587,12 @@ class Dashboard: obj.history_date = idx['hd'] last_lst.append(obj) # years - self.periods = model.get_periods(slice=slice, fltr=fltr) + base_kwargs = {'fltr':fltr} + if date_source: + base_kwargs['date_source'] = date_source + periods_kwargs = base_kwargs.copy() + periods_kwargs['slice'] = slice + self.periods = model.get_periods(**periods_kwargs) self.periods = list(set(self.periods)) self.periods.sort() if not self.total_number or not self.periods: @@ -594,11 +600,11 @@ class Dashboard: # numbers if slice == 'year': self.values = [('year', _(u"Year"), reversed(self.periods))] - self.numbers = [model.get_by_year(year, fltr=fltr).count() + self.numbers = [model.get_by_year(year, **base_kwargs).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() + 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])) diff --git a/ishtar_common/views.py b/ishtar_common/views.py index e51704794..d20b8b2af 100644 --- a/ishtar_common/views.py +++ b/ishtar_common/views.py @@ -730,21 +730,27 @@ def dashboard_main_detail(request, item_name): 'ishtar/dashboards/dashboard_main_detail_users.html', dct, context_instance=RequestContext(request)) form = None - slicing, fltr = 'year', {} + slicing, date_source, fltr = 'year', None, {} if item_name in DASHBOARD_FORMS: if request.method == 'POST': form = DASHBOARD_FORMS[item_name](request.POST) if form.is_valid(): slicing = form.cleaned_data['slicing'] fltr = form.get_filter() + if hasattr(form, 'get_date_source'): + date_source = form.get_date_source() else: form = DASHBOARD_FORMS[item_name]() lbl, dashboard = None, None if item_name == 'files' and \ 'archaeological_files' in settings.INSTALLED_APPS: from archaeological_files.models import File - lbl, dashboard = (_(u"Archaeological files"), models.Dashboard(File, - slice=slicing, fltr=fltr)) + dashboard_kwargs = {'slice':slicing, 'fltr':fltr,} + # date_source is only relevant when the form has set one + if date_source: + dashboard_kwargs['date_source'] = date_source + lbl, dashboard = (_(u"Archaeological files"), + models.Dashboard(File, **dashboard_kwargs)) if item_name == 'operations': from archaeological_operations.models import Operation lbl, dashboard = (_(u"Operations"), models.Dashboard(Operation, |