summaryrefslogtreecommitdiff
path: root/ishtar_common/widgets.py
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@proxience.com>2015-10-06 14:49:10 +0200
committerÉtienne Loks <etienne.loks@proxience.com>2015-10-06 14:49:10 +0200
commitcba608462d4f03a8ca48f1e7a912e833682a21e8 (patch)
tree7db35133da25a55cfe1183260953aab882255309 /ishtar_common/widgets.py
parent12b517daa7aca2ca475a654ecca99202ecbe9f23 (diff)
downloadIshtar-cba608462d4f03a8ca48f1e7a912e833682a21e8.tar.bz2
Ishtar-cba608462d4f03a8ca48f1e7a912e833682a21e8.zip
Grids: manage multiple values in the same column
Diffstat (limited to 'ishtar_common/widgets.py')
-rw-r--r--ishtar_common/widgets.py62
1 files changed, 37 insertions, 25 deletions
diff --git a/ishtar_common/widgets.py b/ishtar_common/widgets.py
index 509907034..2aa9b12f6 100644
--- a/ishtar_common/widgets.py
+++ b/ishtar_common/widgets.py
@@ -525,34 +525,46 @@ class JQueryJqGrid(forms.RadioSelect):
self.source_full = source_full
def get_cols(self):
- col_names, extra_cols = [], []
- for field_name in getattr(self.associated_model, self.table_cols):
- field = self.associated_model
- if type(field_name) in (list, tuple):
- field_name = field_name[0]
+ jq_col_names, extra_cols = [], []
+ col_labels = {}
+ if hasattr(self.associated_model, self.table_cols + '_LBL'):
+ col_labels = getattr(self.associated_model,
+ self.table_cols + '_LBL')
+ for col_names in getattr(self.associated_model, self.table_cols):
field_verbose_names = []
- keys = field_name.split('.')
- field_verbose_name = ""
- for key in keys:
- if hasattr(field, 'rel') and field.rel:
- field = field.rel.to
- try:
- field = field._meta.get_field(key)
- field_verbose_name = field.verbose_name
- field_name = field.name
- except (fields.FieldDoesNotExist, AttributeError):
- if hasattr(field, key + '_lbl'):
- field_name = key
- field_verbose_name = getattr(field, key + '_lbl')
- else:
- continue
- field_verbose_names.append(unicode(field_verbose_name))
- col_names.append(u'"%s"' % settings.JOINT.join(
- [f for f in field_verbose_names if f]))
+ field_verbose_name, field_name = "", ""
+ if type(col_names) not in (list, tuple):
+ col_names = [col_names]
+ for col_name in col_names:
+ field = self.associated_model
+ keys = col_name.split('.')
+ f_name = ''
+ for key in keys:
+ if hasattr(field, 'rel') and field.rel:
+ field = field.rel.to
+ try:
+ field = field._meta.get_field(key)
+ field_verbose_name = field.verbose_name
+ f_name = field.name
+ except (fields.FieldDoesNotExist, AttributeError):
+ if hasattr(field, key + '_lbl'):
+ f_name = key
+ field_verbose_name = getattr(field, key + '_lbl')
+ else:
+ continue
+ if field_name:
+ field_name += "__"
+ field_name += f_name
+ field_verbose_names.append(unicode(field_verbose_name))
+ if field_name in col_labels:
+ jq_col_names.append(u'"%s"' % unicode(col_labels[field_name]))
+ else:
+ jq_col_names.append(u'"%s"' % settings.JOINT.join(
+ [f for f in field_verbose_names if f]))
extra_cols.append(self.COL_TPL % {'idx': field_name})
- col_names = col_names and ", ".join(col_names) or ""
+ jq_col_names = jq_col_names and ", ".join(jq_col_names) or ""
extra_cols = extra_cols and ", ".join(extra_cols) or ""
- return col_names, extra_cols
+ return jq_col_names, extra_cols
def render(self, name, value=None, attrs=None):
t = loader.get_template('blocks/form_snippet.html')