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 | cba608462d4f03a8ca48f1e7a912e833682a21e8 (patch) | |
tree | 7db35133da25a55cfe1183260953aab882255309 /ishtar_common | |
parent | 12b517daa7aca2ca475a654ecca99202ecbe9f23 (diff) | |
download | Ishtar-cba608462d4f03a8ca48f1e7a912e833682a21e8.tar.bz2 Ishtar-cba608462d4f03a8ca48f1e7a912e833682a21e8.zip |
Grids: manage multiple values in the same column
Diffstat (limited to 'ishtar_common')
-rw-r--r-- | ishtar_common/templatetags/window_tables.py | 2 | ||||
-rw-r--r-- | ishtar_common/views.py | 18 | ||||
-rw-r--r-- | ishtar_common/widgets.py | 62 |
3 files changed, 51 insertions, 31 deletions
diff --git a/ishtar_common/templatetags/window_tables.py b/ishtar_common/templatetags/window_tables.py index 0b744c1e5..32a3076c5 100644 --- a/ishtar_common/templatetags/window_tables.py +++ b/ishtar_common/templatetags/window_tables.py @@ -39,6 +39,8 @@ except: try: from archaeological_finds.models import Find ASSOCIATED_MODELS['finds'] = (Find, 'get-find', 'get-find-full') + ASSOCIATED_MODELS['finds_for_ope'] = ( + Find, 'get-find-for-ope', 'get-find-full') except: pass diff --git a/ishtar_common/views.py b/ishtar_common/views.py index 10c62d465..efd7a9de1 100644 --- a/ishtar_common/views.py +++ b/ishtar_common/views.py @@ -525,9 +525,14 @@ def get_item(model, func_name, default_name, extra_request_keys=[], my_vals = [format_val(v) for v in vals] else: new_vals = [] - for idx, v in enumerate(vals): - new_vals.append("{}{}{}".format( - my_vals[idx], settings.JOINT, format_val(v))) + if not vals: + for idx, my_v in enumerate(my_vals): + new_vals.append(u"{}{}{}".format( + my_v, u' - ', '')) + else: + for idx, v in enumerate(vals): + new_vals.append(u"{}{}{}".format( + my_vals[idx], u' - ', format_val(v))) my_vals = new_vals[:] data.append(", ".join(my_vals) or u"") datas.append(data) @@ -563,9 +568,10 @@ def get_item(model, func_name, default_name, extra_request_keys=[], for idx, value in enumerate(data[1:]): if value: table_col = table_cols[idx] - if type(table_col) in (list, tuple): - table_col = table_col[0] - res[table_col.split('.')[-1]] = value + if type(table_col) not in (list, tuple): + table_col = [table_col] + k = "__".join([tc.split('.')[-1] for tc in table_col]) + res[k] = value rows.append(res) data = json.dumps({ "records": items_nb, 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') |