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