diff options
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, | 
