From 4191a56bfb432b854b270d658cd65e72161a1114 Mon Sep 17 00:00:00 2001 From: Lance Edgar Date: Sat, 10 Feb 2018 17:14:32 -0600 Subject: [PATCH] Fix some bugs with importer batch views --- tailbone/views/batch/importer.py | 26 ++++++++++++++++++-------- tailbone/views/master.py | 3 ++- 2 files changed, 20 insertions(+), 9 deletions(-) diff --git a/tailbone/views/batch/importer.py b/tailbone/views/batch/importer.py index 22e4323a..0aba98c1 100644 --- a/tailbone/views/batch/importer.py +++ b/tailbone/views/batch/importer.py @@ -30,6 +30,8 @@ import sqlalchemy as sa from rattail.db import model +import colander + from tailbone.views.batch import BatchMasterView @@ -208,13 +210,21 @@ class ImporterBatchView(BatchMasterView): return kwargs def make_row_form(self, instance=None, **kwargs): + fields = ['sequence', 'object_key', 'object_str', 'status_code'] + for col in self.current_row_table.c: + if col.name.startswith('key_'): + fields.append(col.name) + if kwargs.get('fields') is None: - fields = ['sequence', 'object_key', 'object_str', 'status_code'] - for col in self.current_row_table.c: - if col.name.startswith('key_'): - fields.append(col.name) kwargs['fields'] = fields - return super(ImporterBatchView, self).make_row_form(instance=instance, **kwargs) + + row = dict([(field, getattr(instance, field)) + for field in fields]) + row['status_text'] = instance.status_text + + kwargs.setdefault('schema', colander.Schema()) + kwargs.setdefault('cancel_url', None) + return super(ImporterBatchView, self).make_row_form(instance=row, **kwargs) def configure_row_form(self, f): """ @@ -228,9 +238,9 @@ class ImporterBatchView(BatchMasterView): f.set_label('status_code', "Status") def render_row_status_code(self, row, field): - status = self.enum.IMPORTER_BATCH_ROW_STATUS[row.status_code] - if row.status_code == self.enum.IMPORTER_BATCH_ROW_STATUS_UPDATE and row.status_text: - return "{} ({})".format(status, row.status_text) + status = self.enum.IMPORTER_BATCH_ROW_STATUS[row['status_code']] + if row['status_code'] == self.enum.IMPORTER_BATCH_ROW_STATUS_UPDATE and row['status_text']: + return "{} ({})".format(status, row['status_text']) return status def delete_row(self): diff --git a/tailbone/views/master.py b/tailbone/views/master.py index 6c6080d1..32be28f1 100644 --- a/tailbone/views/master.py +++ b/tailbone/views/master.py @@ -2547,7 +2547,8 @@ class MasterView(View): kwargs.setdefault('cancel_url', self.request.get_referrer()) else: instance = kwargs['model_instance'] - kwargs.setdefault('cancel_url', self.get_row_action_url('view', instance)) + if 'cancel_url' not in kwargs: + kwargs['cancel_url'] = self.get_row_action_url('view', instance) defaults.update(kwargs) return defaults