diff options
Diffstat (limited to 'ishtar_common')
| -rw-r--r-- | ishtar_common/models.py | 44 | ||||
| -rw-r--r-- | ishtar_common/static/media/style.css | 1 | ||||
| -rw-r--r-- | ishtar_common/templates/ishtar/dashboards/dashboard_main_detail.html | 10 | ||||
| -rw-r--r-- | ishtar_common/views.py | 21 | 
4 files changed, 62 insertions, 14 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] diff --git a/ishtar_common/static/media/style.css b/ishtar_common/static/media/style.css index 54a97ca77..3c2c429b1 100644 --- a/ishtar_common/static/media/style.css +++ b/ishtar_common/static/media/style.css @@ -560,6 +560,7 @@ table.confirm tr.spacer td:last-child{  .ui-tabs .ui-tabs-nav li.ui-tabs-active a{      background-color:#fff; +    color:#666;  }  .sheet{ diff --git a/ishtar_common/templates/ishtar/dashboards/dashboard_main_detail.html b/ishtar_common/templates/ishtar/dashboards/dashboard_main_detail.html index 820c50136..87ce5c528 100644 --- a/ishtar_common/templates/ishtar/dashboards/dashboard_main_detail.html +++ b/ishtar_common/templates/ishtar/dashboards/dashboard_main_detail.html @@ -141,7 +141,7 @@ var plot_{{unique_id}} = $.jqplot('chart_{{unique_id}}',          sizeAdjust: 7.5        },        series:[{% for label in dashboard.serie_labels %} -        {%if forloop.counter0%}, {% endif %}{label:"{{label}}"}{% endfor %} +        {%if forloop.counter0%}, {% endif %}{label:"{{label}}", showmarker:showmarker}{% endfor %}        ],        cursor:{          show: true, @@ -172,9 +172,9 @@ $('#search_{{unique_id}}').click(function (){      return false;  }); -{% ifequal item_name 'files' %} -load_jquerydate_after(); -load_jquerydate_before(); -{% endifequal %} +{% if item_name == 'files' or item_name == "operations"%} +load_jquerydate_{{item_name}}_after(); +load_jquerydate_{{item_name}}_before(); +{% endif %}  });  </script> diff --git a/ishtar_common/views.py b/ishtar_common/views.py index d15157eed..889bd3893 100644 --- a/ishtar_common/views.py +++ b/ishtar_common/views.py @@ -50,6 +50,8 @@ if settings.XHTML2ODT_PATH:  from menus import menu +from archaeological_operations.forms import DashboardForm as DashboardFormOpe +  from ishtar_common.forms import FinalForm, FinalDeleteForm  from ishtar_common import forms_common as forms  from ishtar_common import wizards @@ -720,6 +722,8 @@ if 'archaeological_files' in settings.INSTALLED_APPS:      from archaeological_files.forms import DashboardForm as DashboardFormFile      DASHBOARD_FORMS['files'] = DashboardFormFile +DASHBOARD_FORMS['operations'] = DashboardFormOpe +  def dashboard_main_detail(request, item_name):      """      Specific tab of the main dashboard @@ -732,8 +736,8 @@ def dashboard_main_detail(request, item_name):      form = None      slicing, date_source, fltr, show_detail  = 'year', None, {}, False      if (item_name == 'files' and \ -      'archaeological_files' in settings.INSTALLED_APPS):\ -        #or item_name == 'operations': +      'archaeological_files' in settings.INSTALLED_APPS) \ +      or item_name == 'operations':          slicing = 'month'      if item_name in DASHBOARD_FORMS:          if request.method == 'POST': @@ -748,20 +752,23 @@ def dashboard_main_detail(request, item_name):          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 +    if (item_name == 'files' and \ +      'archaeological_files' in settings.INSTALLED_APPS) \ +      or item_name == 'operations':          dashboard_kwargs = {'slice':slicing, 'fltr':fltr,                              'show_detail':show_detail}          # date_source is only relevant when the form has set one          if date_source:              dashboard_kwargs['date_source'] = date_source +    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, **dashboard_kwargs))      if item_name == 'operations':          from archaeological_operations.models import Operation -        lbl, dashboard = (_(u"Operations"), models.Dashboard(Operation, -                                                    slice=slicing, fltr=fltr)) +        lbl, dashboard = (_(u"Operations"), +                          models.Dashboard(Operation, **dashboard_kwargs))      if item_name == 'contextrecords' and \        'archaeological_context_records' in settings.INSTALLED_APPS:          from archaeological_context_records.models import ContextRecord  | 
