diff options
Diffstat (limited to 'ishtar/ishtar_base/views.py')
-rw-r--r-- | ishtar/ishtar_base/views.py | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/ishtar/ishtar_base/views.py b/ishtar/ishtar_base/views.py index d036c9876..631e71ed7 100644 --- a/ishtar/ishtar_base/views.py +++ b/ishtar/ishtar_base/views.py @@ -160,12 +160,13 @@ def format_val(val): HIERARCHIC_LEVELS = 5 HIERARCHIC_FIELDS = ['period', 'unit', 'material'] +PRIVATE_FIELDS = ('id', 'history_modifier', 'order') def get_item(model, func_name, default_name, extra_request_keys=[], - bool_fields=[]): + base_request={}, bool_fields=[]): """ Generic treatment of tables """ - def func(request, data_type='json', **dct): + def func(request, data_type='json', full=False, **dct): if 'type' in dct: data_type = dct.pop('type') if not data_type: @@ -177,7 +178,7 @@ def get_item(model, func_name, default_name, extra_request_keys=[], for field in fields]) request_keys.update(extra_request_keys) request_items = request.method == 'POST' and request.POST or request.GET - dct = {} + dct = base_request try: old = 'old' in request_items and int(request_items['old']) except ValueError: @@ -239,9 +240,13 @@ def get_item(model, func_name, default_name, extra_request_keys=[], datas = [] if old: items = [item.get_previous(old) for item in items] + table_cols = full and [field.name for field in model._meta.fields + if field.name not in PRIVATE_FIELDS] \ + or model.TABLE_COLS + print table_cols for item in items: data = [item.pk] - for k in model.TABLE_COLS: + for k in table_cols: vals = [item] for ky in k.split('.'): new_vals = [] @@ -273,7 +278,7 @@ def get_item(model, func_name, default_name, extra_request_keys=[], res = {'id':data[0], 'link':lnk} for idx, value in enumerate(data[1:]): if value: - res[model.TABLE_COLS[idx].split('.')[-1]] = value + res[table_cols[idx].split('.')[-1]] = value rows.append(res) data = json.dumps({ "records":len(items), @@ -288,7 +293,7 @@ def get_item(model, func_name, default_name, extra_request_keys=[], response['Content-Disposition'] = 'attachment; filename=%s'%filename writer = csv.writer(response, **CSV_OPTIONS) col_names = [] - for field_name in model.TABLE_COLS: + for field_name in table_cols: try: field = model._meta.get_field(field_name) except: @@ -503,6 +508,7 @@ get_contextrecordsource = get_item(models.ContextRecordSource, get_archaeologicalitem = get_item(models.Item, 'get_archaeologicalitem', 'item', bool_fields = ['base_items__is_isolated'], + base_request={'downstream_treatment__isnull':True}, extra_request_keys={ 'base_items__context_record__parcel__town': 'base_items__context_record__parcel__town', |