More tweaks to new master-based batch views, etc.
This commit is contained in:
parent
7ac4af5f34
commit
874fd6d4b3
7 changed files with 79 additions and 17 deletions
|
@ -173,8 +173,9 @@ class BatchMasterView(MasterView):
|
|||
fs.cognized_by.set(label="Cognized by", renderer=forms.renderers.UserFieldRenderer)
|
||||
fs.executed_by.set(label="Executed by", renderer=forms.renderers.UserFieldRenderer)
|
||||
|
||||
batch = fs.model
|
||||
batch.created_by_uuid = self.request.user.uuid
|
||||
if self.request.user:
|
||||
batch = fs.model
|
||||
batch.created_by_uuid = self.request.user.uuid
|
||||
|
||||
def configure_fieldset(self, fs):
|
||||
"""
|
||||
|
@ -332,18 +333,39 @@ class BatchMasterView(MasterView):
|
|||
exactly this means will depend on the type of batch etc.
|
||||
"""
|
||||
batch = self.get_instance()
|
||||
route_prefix = self.get_route_prefix()
|
||||
permission_prefix = self.get_permission_prefix()
|
||||
|
||||
cognizer = self.request.user
|
||||
if not cognizer:
|
||||
uuid = self.request.session.pop('late_login_user', None)
|
||||
cognizer = Session.query(model.User).get(uuid) if uuid else None
|
||||
|
||||
# If handler doesn't declare the need for progress indicator, things
|
||||
# are nice and simple.
|
||||
if not self.handler.show_progress:
|
||||
self.refresh_data(Session(), batch)
|
||||
self.refresh_data(Session, batch, cognizer=cognizer)
|
||||
self.request.session.flash("Batch data has been refreshed.")
|
||||
|
||||
# TODO: This seems hacky...it exists for (only) one specific scenario.
|
||||
if not self.request.has_perm('{}.view'.format(permission_prefix)):
|
||||
return self.redirect(self.request.route_url('{}.create'.format(route_prefix)))
|
||||
|
||||
return self.redirect(self.get_action_url('view', batch))
|
||||
|
||||
# Showing progress requires a separate thread; start that first.
|
||||
key = '{}.refresh'.format(self.model_class.__tablename__)
|
||||
progress = SessionProgress(self.request, key)
|
||||
thread = Thread(target=self.refresh_thread, args=(batch.uuid, progress))
|
||||
# success_url = self.request.route_url('vendors.scangenius.create') if not self.request.user else None
|
||||
|
||||
# TODO: This seems hacky...it exists for (only) one specific scenario.
|
||||
success_url = None
|
||||
if not self.request.user:
|
||||
success_url = self.request.route_url('{}.create'.format(route_prefix))
|
||||
|
||||
thread = Thread(target=self.refresh_thread, args=(batch.uuid, progress,
|
||||
cognizer.uuid if cognizer else None,
|
||||
success_url))
|
||||
thread.start()
|
||||
|
||||
# Send user to progress page.
|
||||
|
@ -352,6 +374,11 @@ class BatchMasterView(MasterView):
|
|||
'cancel_url': self.get_action_url('view', batch),
|
||||
'cancel_msg': "Batch refresh was canceled.",
|
||||
}
|
||||
|
||||
# TODO: This seems hacky...it exists for (only) one specific scenario.
|
||||
if not self.request.has_perm('{}.view'.format(permission_prefix)):
|
||||
kwargs['cancel_url'] = self.request.route_url('{}.create'.format(route_prefix))
|
||||
|
||||
return render_to_response('/progress.mako', kwargs, request=self.request)
|
||||
|
||||
def refresh_data(self, session, batch, cognizer=None, progress=None):
|
||||
|
@ -596,7 +623,7 @@ class BatchMasterView(MasterView):
|
|||
|
||||
key = '{}.execute'.format(self.model_class.__tablename__)
|
||||
progress = SessionProgress(self.request, key)
|
||||
thread = Thread(target=self.execute_thread, args=(batch.uuid, progress))
|
||||
thread = Thread(target=self.execute_thread, args=(batch.uuid, self.request.user.uuid, progress))
|
||||
thread.start()
|
||||
|
||||
kwargs = {
|
||||
|
@ -606,7 +633,7 @@ class BatchMasterView(MasterView):
|
|||
}
|
||||
return render_to_response('/progress.mako', kwargs, request=self.request)
|
||||
|
||||
def execute_thread(self, batch_uuid, progress=None):
|
||||
def execute_thread(self, batch_uuid, user_uuid, progress=None):
|
||||
"""
|
||||
Thread target for executing a batch with progress indicator.
|
||||
"""
|
||||
|
@ -633,7 +660,7 @@ class BatchMasterView(MasterView):
|
|||
else:
|
||||
if result:
|
||||
batch.executed = datetime.datetime.utcnow()
|
||||
batch.executed_by = session.merge(self.request.user)
|
||||
batch.executed_by_uuid = user_uuid
|
||||
session.commit()
|
||||
else:
|
||||
session.rollback()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue