diff options
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 |
commit | dad03f626f1028daa44821a7d88551fec21ae88f (patch) | |
tree | 7db35133da25a55cfe1183260953aab882255309 /ishtar_common/widgets.py | |
parent | 4b1349b748e8dbd1ace541cc55562dba6bd9fe6f (diff) | |
download | Ishtar-dad03f626f1028daa44821a7d88551fec21ae88f.tar.bz2 Ishtar-dad03f626f1028daa44821a7d88551fec21ae88f.zip |
Grids: manage multiple values in the same column
Diffstat (limited to 'ishtar_common/widgets.py')
-rw-r--r-- | ishtar_common/widgets.py | 62 |
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') |