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',  | 
