diff options
author | Étienne Loks <etienne.loks@peacefrogs.net> | 2011-07-10 19:32:10 +0200 |
---|---|---|
committer | Étienne Loks <etienne.loks@peacefrogs.net> | 2011-07-10 19:32:10 +0200 |
commit | 71b8e41a3bdb78b89b35b2fcee8d1418fa9c3bc2 (patch) | |
tree | 4b5aad0a70b1803a63d4aa4ddec3914a7a210004 | |
parent | e6400e623dff8749bb530349091824ffe1217241 (diff) | |
download | Ishtar-71b8e41a3bdb78b89b35b2fcee8d1418fa9c3bc2.tar.bz2 Ishtar-71b8e41a3bdb78b89b35b2fcee8d1418fa9c3bc2.zip |
Correct operation index display (closes #436, closes #346)
-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 ""
|