Various tweaks to base batch views.
These were made to support a non-file batch; apparently that use case hadn't seen much attention yet.
This commit is contained in:
parent
e688471732
commit
6feb488884
|
@ -1,7 +1,7 @@
|
||||||
## -*- coding: utf-8 -*-
|
## -*- coding: utf-8 -*-
|
||||||
<%inherit file="/crud.mako" />
|
<%inherit file="/crud.mako" />
|
||||||
|
|
||||||
<%def name="title()">Upload ${batch_display}</%def>
|
<%def name="title()">New ${batch_display}</%def>
|
||||||
|
|
||||||
<%def name="context_menu_items()">
|
<%def name="context_menu_items()">
|
||||||
% if request.has_perm('{0}.view'.format(permission_prefix)):
|
% if request.has_perm('{0}.view'.format(permission_prefix)):
|
||||||
|
|
|
@ -414,8 +414,14 @@ class BatchCrud(BaseCrud):
|
||||||
if self.creating:
|
if self.creating:
|
||||||
del fs.created
|
del fs.created
|
||||||
del fs.created_by
|
del fs.created_by
|
||||||
del fs.cognized
|
if 'cognized' in fs.render_fields:
|
||||||
del fs.cognized_by
|
del fs.cognized
|
||||||
|
if 'cognized_by' in fs.render_fields:
|
||||||
|
del fs.cognized_by
|
||||||
|
if 'executed' in fs.render_fields:
|
||||||
|
del fs.executed
|
||||||
|
if 'executed_by' in fs.render_fields:
|
||||||
|
del fs.executed_by
|
||||||
return fs
|
return fs
|
||||||
|
|
||||||
def configure_fieldset(self, fieldset):
|
def configure_fieldset(self, fieldset):
|
||||||
|
@ -434,6 +440,46 @@ class BatchCrud(BaseCrud):
|
||||||
fs.executed_by,
|
fs.executed_by,
|
||||||
])
|
])
|
||||||
|
|
||||||
|
def init_batch(self, batch):
|
||||||
|
"""
|
||||||
|
Initialize a new batch. Derived classes can override this to
|
||||||
|
effectively provide default values for a batch, etc. This method is
|
||||||
|
invoked after a batch has been fully prepared for insertion to the
|
||||||
|
database, but before the push to the database occurs.
|
||||||
|
|
||||||
|
Note that the return value of this function matters; if it is boolean
|
||||||
|
false then the batch will not be persisted at all, and the user will be
|
||||||
|
redirected to the "create batch" page.
|
||||||
|
"""
|
||||||
|
return True
|
||||||
|
|
||||||
|
def save_form(self, form):
|
||||||
|
"""
|
||||||
|
Save the uploaded data file if necessary, etc. If batch initialization
|
||||||
|
fails, don't persist the batch at all; the user will be sent back to
|
||||||
|
the "create batch" page in that case.
|
||||||
|
"""
|
||||||
|
# Transfer form data to batch instance.
|
||||||
|
form.fieldset.sync()
|
||||||
|
batch = form.fieldset.model
|
||||||
|
|
||||||
|
# For new batches, assign current user as creator, etc.
|
||||||
|
if self.creating:
|
||||||
|
with Session.no_autoflush:
|
||||||
|
batch.created_by = self.request.user or self.late_login_user()
|
||||||
|
|
||||||
|
# Expunge batch from session to prevent it from being flushed
|
||||||
|
# during init. This is done as a convenience to views which
|
||||||
|
# provide an init method. Some batches may have required fields
|
||||||
|
# which aren't filled in yet, but the view may need to query the
|
||||||
|
# database to obtain the values. This will cause a session flush,
|
||||||
|
# and the missing fields will trigger data integrity errors.
|
||||||
|
Session.expunge(batch)
|
||||||
|
self.batch_inited = self.init_batch(batch)
|
||||||
|
if self.batch_inited:
|
||||||
|
Session.add(batch)
|
||||||
|
Session.flush()
|
||||||
|
|
||||||
def update(self):
|
def update(self):
|
||||||
"""
|
"""
|
||||||
Don't allow editing a batch which has already been executed.
|
Don't allow editing a batch which has already been executed.
|
||||||
|
@ -541,7 +587,7 @@ class BatchCrud(BaseCrud):
|
||||||
else:
|
else:
|
||||||
batch.cognized_by = self.request.user
|
batch.cognized_by = self.request.user
|
||||||
|
|
||||||
def refresh_thread(self, batch_uuid, cognizer_uuid=None, success_url=None, progress=None):
|
def refresh_thread(self, batch_uuid, progress=None, cognizer_uuid=None, success_url=None):
|
||||||
"""
|
"""
|
||||||
Thread target for refreshing batch data with progress indicator.
|
Thread target for refreshing batch data with progress indicator.
|
||||||
"""
|
"""
|
||||||
|
@ -718,19 +764,6 @@ class FileBatchCrud(BatchCrud):
|
||||||
self.handler.set_data_file(batch, path)
|
self.handler.set_data_file(batch, path)
|
||||||
os.remove(path)
|
os.remove(path)
|
||||||
|
|
||||||
def init_batch(self, batch):
|
|
||||||
"""
|
|
||||||
Initialize a new batch. Derived classes can override this to
|
|
||||||
effectively provide default values for a batch, etc. This method is
|
|
||||||
invoked after a batch has been fully prepared for insertion to the
|
|
||||||
database, but before the push to the database occurs.
|
|
||||||
|
|
||||||
Note that the return value of this function matters; if it is boolean
|
|
||||||
false then the batch will not be persisted at all, and the user will be
|
|
||||||
redirected to the "create batch" page.
|
|
||||||
"""
|
|
||||||
return True
|
|
||||||
|
|
||||||
def post_save(self, form):
|
def post_save(self, form):
|
||||||
"""
|
"""
|
||||||
This checks for failed batch initialization when creating a new batch.
|
This checks for failed batch initialization when creating a new batch.
|
||||||
|
|
Loading…
Reference in a new issue