summaryrefslogtreecommitdiff
path: root/ishtar_common
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
parent12b517daa7aca2ca475a654ecca99202ecbe9f23 (diff)
downloadIshtar-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.py2
-rw-r--r--ishtar_common/views.py18
-rw-r--r--ishtar_common/widgets.py62
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')