Add setup/teardown handler hooks when cloning a batch
also fix a small rowcount bug
This commit is contained in:
parent
3f924b14f0
commit
f6775f5d8b
|
@ -451,10 +451,25 @@ class BatchHandler(object):
|
||||||
if hasattr(batch, 'data_rows'):
|
if hasattr(batch, 'data_rows'):
|
||||||
del batch.data_rows[:]
|
del batch.data_rows[:]
|
||||||
|
|
||||||
|
def setup_clone(self, oldbatch, progress=None):
|
||||||
|
"""
|
||||||
|
Perform any setup (caching etc.) necessary for cloning batch. Note
|
||||||
|
that the ``oldbatch`` arg is the "old" batch, i.e. the one from which a
|
||||||
|
clone is to be created.
|
||||||
|
"""
|
||||||
|
|
||||||
|
def teardown_clone(self, newbatch, progress=None):
|
||||||
|
"""
|
||||||
|
Perform any teardown (cleanup etc.) necessary after cloning a batch.
|
||||||
|
Note that the ``newbatch`` arg is the "new" batch, i.e. the one which
|
||||||
|
was just created by cloning the old batch.
|
||||||
|
"""
|
||||||
|
|
||||||
def clone(self, oldbatch, created_by, progress=None):
|
def clone(self, oldbatch, created_by, progress=None):
|
||||||
"""
|
"""
|
||||||
Clone the given batch as a new batch, and return the new batch.
|
Clone the given batch as a new batch, and return the new batch.
|
||||||
"""
|
"""
|
||||||
|
self.setup_clone(oldbatch, progress=progress)
|
||||||
batch_class = self.batch_model_class
|
batch_class = self.batch_model_class
|
||||||
batch_mapper = orm.class_mapper(batch_class)
|
batch_mapper = orm.class_mapper(batch_class)
|
||||||
|
|
||||||
|
@ -462,7 +477,7 @@ class BatchHandler(object):
|
||||||
newbatch.created_by = created_by
|
newbatch.created_by = created_by
|
||||||
newbatch.rowcount = 0
|
newbatch.rowcount = 0
|
||||||
for name in batch_mapper.columns.keys():
|
for name in batch_mapper.columns.keys():
|
||||||
if name not in ('uuid', 'id', 'created', 'created_by_uuid', 'executed', 'executed_by_uuid'):
|
if name not in ('uuid', 'id', 'created', 'created_by_uuid', 'rowcount', 'executed', 'executed_by_uuid'):
|
||||||
setattr(newbatch, name, getattr(oldbatch, name))
|
setattr(newbatch, name, getattr(oldbatch, name))
|
||||||
|
|
||||||
session = orm.object_session(oldbatch)
|
session = orm.object_session(oldbatch)
|
||||||
|
@ -480,6 +495,7 @@ class BatchHandler(object):
|
||||||
message="Cloning data rows for new batch")
|
message="Cloning data rows for new batch")
|
||||||
|
|
||||||
self.refresh_batch_status(newbatch)
|
self.refresh_batch_status(newbatch)
|
||||||
|
self.teardown_clone(newbatch, progress=progress)
|
||||||
return newbatch
|
return newbatch
|
||||||
|
|
||||||
def clone_row(self, oldrow):
|
def clone_row(self, oldrow):
|
||||||
|
@ -487,7 +503,7 @@ class BatchHandler(object):
|
||||||
row_mapper = orm.class_mapper(row_class)
|
row_mapper = orm.class_mapper(row_class)
|
||||||
newrow = row_class()
|
newrow = row_class()
|
||||||
for name in row_mapper.columns.keys():
|
for name in row_mapper.columns.keys():
|
||||||
if name not in ('uuid', 'batch_uuid'):
|
if name not in ('uuid', 'batch_uuid', 'sequence'):
|
||||||
setattr(newrow, name, getattr(oldrow, name))
|
setattr(newrow, name, getattr(oldrow, name))
|
||||||
return newrow
|
return newrow
|
||||||
|
|
||||||
|
|
|
@ -59,6 +59,7 @@ class LabelBatchHandler(BatchHandler):
|
||||||
|
|
||||||
setup_populate = setup
|
setup_populate = setup
|
||||||
setup_refresh = setup
|
setup_refresh = setup
|
||||||
|
setup_clone = setup
|
||||||
|
|
||||||
def make_batch(self, session, progress=None, **kwargs):
|
def make_batch(self, session, progress=None, **kwargs):
|
||||||
"""
|
"""
|
||||||
|
|
Loading…
Reference in a new issue