From 14c5406562569428e4df4b12f2e67437ab1a199f Mon Sep 17 00:00:00 2001 From: Patrick Uiterwijk Date: May 22 2017 20:37:00 +0000 Subject: Improve error reporting for tasks Signed-off-by: Patrick Uiterwijk --- diff --git a/pagure/__init__.py b/pagure/__init__.py index 4f134c3..d4d0fe7 100644 --- a/pagure/__init__.py +++ b/pagure/__init__.py @@ -673,9 +673,13 @@ def get_remote_repo_path(remote_git, branch_from, ignore_non_exist=False): return repopath -def wait_for_task(taskid): +def wait_for_task(taskid, prev=None): + if prev is None: + prev = flask.request.full_path return flask.redirect(flask.url_for( - 'wait_task', taskid=taskid)) + 'wait_task', + taskid=taskid, + prev=prev)) def wait_for_task_post(taskid, form, endpoint, initial=False, **kwargs): diff --git a/pagure/ui/app.py b/pagure/ui/app.py index 5b9bc41..2a66165 100644 --- a/pagure/ui/app.py +++ b/pagure/ui/app.py @@ -489,10 +489,18 @@ def new_project(): @APP.route('/wait/') def wait_task(taskid): - result = pagure.lib.tasks.get_result(taskid) - if result.ready: - result = result.get(timeout=0) + status = pagure.lib.tasks.get_result(taskid) + if status.ready: + result = status.get(timeout=0, propagate=False) + if status.failed(): + flask.flash('Your task failed: %s' % str(result)) + status.forget() + prev = flask.request.args.get('prev') + if not prev or not prev.startswith('/'): + prev = '/' + return flask.redirect(prev) endpoint = result.pop('endpoint') + status.forget() return flask.redirect( flask.url_for(endpoint, **result)) else: diff --git a/pagure/ui/fork.py b/pagure/ui/fork.py index def7cb2..78be8ef 100644 --- a/pagure/ui/fork.py +++ b/pagure/ui/fork.py @@ -727,7 +727,13 @@ def merge_request_pull(repo, requestid, username=None, namespace=None): taskid = pagure.lib.tasks.merge_pull_request.delay( repo.name, namespace, username, requestid, flask.g.fas_user.username) - return pagure.wait_for_task(taskid) + return pagure.wait_for_task( + taskid, + prev=flask.url_for('request_pull', + repo=repo.name, + namespace=namespace, + username=username, + requestid=requestid)) except pygit2.GitError as err: _log.info('GitError exception raised') flask.flash(str(err.message), 'error')