summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
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
commit71b8e41a3bdb78b89b35b2fcee8d1418fa9c3bc2 (patch)
tree4b5aad0a70b1803a63d4aa4ddec3914a7a210004
parente6400e623dff8749bb530349091824ffe1217241 (diff)
downloadIshtar-71b8e41a3bdb78b89b35b2fcee8d1418fa9c3bc2.tar.bz2
Ishtar-71b8e41a3bdb78b89b35b2fcee8d1418fa9c3bc2.zip
Correct operation index display (closes #436, closes #346)
-rw-r--r--ishtar/ishtar_base/models.py13
-rw-r--r--ishtar/ishtar_base/views.py20
-rw-r--r--ishtar/ishtar_base/widgets.py26
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 ""