diff options
| -rw-r--r-- | ishtar/ishtar_base/models.py | 13 | ||||
| -rw-r--r-- | ishtar/ishtar_base/views.py | 20 | ||||
| -rw-r--r-- | ishtar/ishtar_base/widgets.py | 26 | 
3 files changed, 39 insertions, 20 deletions
diff --git a/ishtar/ishtar_base/models.py b/ishtar/ishtar_base/models.py index 8c4c91dae..192b3e787 100644 --- a/ishtar/ishtar_base/models.py +++ b/ishtar/ishtar_base/models.py @@ -626,8 +626,8 @@ class RemainType(GeneralType):          verbose_name_plural = _(u"Remain types")  class Operation(BaseHistorizedItem, OwnPerms): -    TABLE_COLS = ['operation_code', 'year', 'operation_type', -                  'remains', 'towns', 'associated_file', 'start_date'] +    TABLE_COLS = ['year_index', 'operation_type', 'remains', 'towns', +                  'associated_file', 'start_date', 'excavation_end_date']      start_date = models.DateField(_(u"Start date"), null=True, blank=True)      excavation_end_date = models.DateField(_(u"Excavation end date"), null=True,                                             blank=True) @@ -648,11 +648,11 @@ class Operation(BaseHistorizedItem, OwnPerms):      if settings.COUNTRY == 'fr':          code_patriarche = models.IntegerField(u"Code PATRIARCHE", null=True,                                                blank=True) +        TABLE_COLS = ['code_patriarche'] + TABLE_COLS          code_dracar = models.CharField(u"Code DRACAR", max_length=10, null=True,                                         blank=True)          fnap_financing = models.FloatField(u"Financement FNAP",                                               blank=True, null=True) -        TABLE_COLS += ["code_patriarche"]          zoning_prescription = models.NullBooleanField(                              _(u"Prescription on zoning"), blank=True, null=True)          large_area_prescription = models.NullBooleanField( @@ -680,6 +680,13 @@ class Operation(BaseHistorizedItem, OwnPerms):                                 unicode(self.operation_code))))          return JOINT.join(items) +    year_index_lbl = _(u"Operation code") +    @property +    def year_index(self): +        lbl = unicode(self.operation_code) +        lbl = u"%d-%s%s" % (self.year, (3-len(lbl))*"0", lbl) +        return lbl +      def clean(self):          objs = self.__class__.objects.filter(year=self.year,                                               operation_code=self.operation_code) diff --git a/ishtar/ishtar_base/views.py b/ishtar/ishtar_base/views.py index e32b9dba5..8a3ecb05f 100644 --- a/ishtar/ishtar_base/views.py +++ b/ishtar/ishtar_base/views.py @@ -219,14 +219,17 @@ def get_item(model, func_name, default_name, extra_request_keys=[],              query = query & or_req          items = model.objects.filter(query)          q = request_items.get('sidx') -        # manage tables +        # manage sort tables          if q and q in request_keys: -            k = request_keys[q] -            if k.endswith("__pk"): -                k = k[:-len("__pk")] + "__label" -            q = request_items.get('sord') -            sign = q and q == u'desc' and "-" or '' -            items = items.order_by(sign + k) +            ks = request_keys[q] +            if type(ks) not in (list, tuple): +                ks = [k] +            for k in ks: +                if k.endswith("__pk"): +                    k = k[:-len("__pk")] + "__label" +                q = request_items.get('sord') +                sign = q and q == u'desc' and "-" or '' +                items = items.order_by(sign + k)          datas = []          if old:              items = [item.get_previous(old) for item in items] @@ -429,7 +432,8 @@ def autocomplete_operation(request, non_closed=True):  get_operation = get_item(models.Operation, 'get_operation', 'operation',        bool_fields = ['end_date__isnull'], -      extra_request_keys={'end_date':'end_date__isnull'}) +      extra_request_keys={'end_date':'end_date__isnull', +                          'year_index':('year', 'operation_code')})  show_operation = show_item(models.Operation, 'operation')  revert_operation = revert_item(models.Operation) diff --git a/ishtar/ishtar_base/widgets.py b/ishtar/ishtar_base/widgets.py index acd7dc427..941d9f0c9 100644 --- a/ishtar/ishtar_base/widgets.py +++ b/ishtar/ishtar_base/widgets.py @@ -27,6 +27,7 @@ from django.utils.html import escape  from django.utils.simplejson import JSONEncoder
  from django.core.urlresolvers import resolve, reverse
  from django.utils.translation import ugettext_lazy as _
 +from django.db.models import fields
  from ishtar import settings
  import models
 @@ -223,15 +224,22 @@ class JQueryJqGrid(forms.RadioSelect):          for field_name in getattr(self.associated_model, self.table_cols):
              field = self.associated_model
              keys = field_name.split('.')
 -            try:
 -                for key in keys:
 -                    if hasattr(field, 'rel'):
 -                        field = field.rel.to
 -                    field = field._meta.get_field(key)
 -            except:
 -                continue
 -            col_names.append(u'"%s"' % field.verbose_name)
 -            extra_cols.append(self.COL_TPL % {'idx':field.name})
 +            field_verbose_name = ""
 +            for key in keys:
 +                if hasattr(field, 'rel'):
 +                    field = field.rel.to
 +                try:
 +                    fld = field._meta.get_field(key)
 +                    field_verbose_name = fld.verbose_name
 +                    field_name = fld.name
 +                except fields.FieldDoesNotExist:
 +                    if hasattr(field, key + '_lbl'):
 +                        field_name = key
 +                        field_verbose_name = getattr(field, key + '_lbl')
 +                    else:
 +                        continue
 +                col_names.append(u'"%s"' % field_verbose_name)
 +                extra_cols.append(self.COL_TPL % {'idx':field_name})
          col_names = col_names and ",\n".join(col_names) or ""
          col_idx = col_idx and ",\n".join(col_idx) or ""
          extra_cols = extra_cols and ",\n".join(extra_cols) or ""
  | 
