summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@peacefrogs.net>2011-02-11 21:15:09 +0100
committerÉtienne Loks <etienne.loks@peacefrogs.net>2011-02-11 21:15:09 +0100
commit1a1b5557cdd1b435b9de9d1c684c6183690293d5 (patch)
treea370f1858bb0c5216099f90bd7d37c1b18c36328
parent31c0a045cbd091da90b414ada700b2ddaa9f853b (diff)
downloadIshtar-1a1b5557cdd1b435b9de9d1c684c6183690293d5.tar.bz2
Ishtar-1a1b5557cdd1b435b9de9d1c684c6183690293d5.zip
Correction on Administrative Act tables (refs #141)
-rw-r--r--ishtar/furnitures/forms.py6
-rw-r--r--ishtar/furnitures/models.py8
-rw-r--r--ishtar/furnitures/views.py7
-rw-r--r--ishtar/furnitures/widgets.py17
4 files changed, 26 insertions, 12 deletions
diff --git a/ishtar/furnitures/forms.py b/ishtar/furnitures/forms.py
index 672f2e67a..57f1c2d05 100644
--- a/ishtar/furnitures/forms.py
+++ b/ishtar/furnitures/forms.py
@@ -1096,7 +1096,8 @@ class AdministrativeActFileFormSelection(forms.Form):
currents = {'pk':models.AdministrativeAct}
pk = forms.IntegerField(label="", required=False,
widget=widgets.JQueryJqGrid(reverse_lazy('get-administrativeact'),
- AdministrativeActFileSelect(), models.AdministrativeAct),
+ AdministrativeActFileSelect(), models.AdministrativeAct,
+ table_cols='TABLE_COLS_FILE'),
validators=[models.valid_id(models.AdministrativeAct)])
def clean(self):
@@ -1530,7 +1531,8 @@ class AdministrativeActOpeSelect(forms.Form):
class AdministrativeActOpeFormSelection(AdministrativeActFileFormSelection):
pk = forms.IntegerField(label="", required=False,
widget=widgets.JQueryJqGrid(reverse_lazy('get-administrativeact'),
- AdministrativeActOpeSelect(), models.AdministrativeAct),
+ AdministrativeActOpeSelect(), models.AdministrativeAct,
+ table_cols='TABLE_COLS_OPE'),
validators=[models.valid_id(models.AdministrativeAct)])
class AdministrativeActOpeForm(AdministrativeActForm):
diff --git a/ishtar/furnitures/models.py b/ishtar/furnitures/models.py
index e476c639a..0c2f07433 100644
--- a/ishtar/furnitures/models.py
+++ b/ishtar/furnitures/models.py
@@ -652,10 +652,10 @@ class ActType(GeneralType):
verbose_name_plural = _(u"Act types")
class AdministrativeAct(BaseHistorizedItem, OwnPerms):
- TABLE_COLS = ['act_type', 'associated_file', 'associated_file.towns',
- 'operation.towns']
- TABLE_COLS_FILE = ['act_type', 'associated_file', 'associated_file__towns',]
- TABLE_COLS_OPE = ['act_type', 'ope__towns', 'operation__towns']
+ TABLE_COLS = ['act_type', 'associated_file', 'operation',
+ 'associated_file.towns', 'operation.towns']
+ TABLE_COLS_FILE = ['act_type', 'associated_file', 'associated_file.towns',]
+ TABLE_COLS_OPE = ['act_type', 'operation', 'operation.towns']
act_type = models.ForeignKey(ActType, verbose_name=_(u"Act type"))
in_charge = models.ForeignKey(Person, blank=True, null=True,
related_name='+', verbose_name=_(u"Person in charge of the operation"))
diff --git a/ishtar/furnitures/views.py b/ishtar/furnitures/views.py
index f02d60e20..11563823a 100644
--- a/ishtar/furnitures/views.py
+++ b/ishtar/furnitures/views.py
@@ -185,8 +185,11 @@ def get_item(model, func_name, default_name, extra_request_keys=[]):
if type == "json":
rows = []
for data in datas:
- rows.append({"id":unicode(data[0]),
- "cell":data})
+ res = {'id':data[0]}
+ for idx, value in enumerate(data[1:]):
+ if value:
+ res[model.TABLE_COLS[idx].split('.')[-1]] = value
+ rows.append(res)
data = json.dumps({
"records":len(items),
"rows":rows
diff --git a/ishtar/furnitures/widgets.py b/ishtar/furnitures/widgets.py
index fe40da912..69591a9ce 100644
--- a/ishtar/furnitures/widgets.py
+++ b/ishtar/furnitures/widgets.py
@@ -28,6 +28,7 @@ from django.core.urlresolvers import resolve
from django.utils.translation import ugettext_lazy as _
from ishtar import settings
+import models
class DeleteWidget(forms.CheckboxInput):
def render(self, name, value, attrs=None):
@@ -129,11 +130,13 @@ class JQueryJqGrid(forms.RadioSelect):
]
css = {'all':['%s/media/ui.jqgrid.css' % settings.MEDIA_URL]}
- def __init__(self, source, form, associated_model, attrs={}):
+ def __init__(self, source, form, associated_model, attrs={},
+ table_cols='TABLE_COLS'):
self.source = source
self.form = form
self.attrs = attrs
self.associated_model = associated_model
+ self.table_cols = table_cols
def render(self, name, value=None, attrs=None):
rendered = unicode(self.form)
@@ -147,9 +150,14 @@ class JQueryJqGrid(forms.RadioSelect):
for k in self.form.fields:
field = self.form.fields[k]
col_idx.append(u'"%s"' % k)
- for field_name in self.associated_model.TABLE_COLS:
+ for field_name in getattr(self.associated_model, self.table_cols):
+ field = self.associated_model
+ keys = field_name.split('.')
try:
- field = self.associated_model._meta.get_field(field_name)
+ 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)
@@ -209,7 +217,8 @@ jQuery("#grid_%(name)s").jqGrid({
pager: '#pager_%(name)s',
pgbuttons: false,
pginput: false,
- width:740
+ width:740,
+ jsonReader : {repeatitems: false}
});
});
</script>