aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--app/static/polltask.js2
-rw-r--r--app/tasks/__init__.py6
-rw-r--r--app/tasks/importtasks.py10
-rw-r--r--app/templates/tasks/view.html4
-rw-r--r--app/views/tasks.py10
5 files changed, 20 insertions, 12 deletions
diff --git a/app/static/polltask.js b/app/static/polltask.js
index bc9d802..8687665 100644
--- a/app/static/polltask.js
+++ b/app/static/polltask.js
@@ -32,6 +32,8 @@ function pollTask(poll_url, disableTimeout) {
if (res.status == "SUCCESS") {
console.log("Got result")
resolve(res.result)
+ } else if (res.status == "FAILURE" || res.status == "REVOKED") {
+ reject()
} else {
retry()
}
diff --git a/app/tasks/__init__.py b/app/tasks/__init__.py
index 40a824c..fe566b8 100644
--- a/app/tasks/__init__.py
+++ b/app/tasks/__init__.py
@@ -4,6 +4,12 @@ from celery import Celery
from app import app
from app.models import *
+class TaskError(Exception):
+ def __init__(self, value):
+ self.value = value
+ def __str__(self):
+ return repr("TaskError: " + self.value)
+
class FlaskCelery(Celery):
def __init__(self, *args, **kwargs):
super(FlaskCelery, self).__init__(*args, **kwargs)
diff --git a/app/tasks/importtasks.py b/app/tasks/importtasks.py
index 7233d87..12b61dd 100644
--- a/app/tasks/importtasks.py
+++ b/app/tasks/importtasks.py
@@ -4,14 +4,7 @@ import urllib.request
from urllib.parse import urlparse, quote_plus
from app import app
from app.models import *
-from app.tasks import celery
-
-class TaskError(Exception):
- def __init__(self, value):
- self.value = value
- def __str__(self):
- return repr(self.value)
-
+from app.tasks import celery, TaskError
class GithubURLMaker:
def __init__(self, url):
@@ -177,6 +170,7 @@ def getMeta(urlstr, author):
@celery.task()
def makeVCSRelease(id, branch):
release = PackageRelease.query.get(id)
+
if release is None:
raise TaskError("No such release!")
diff --git a/app/templates/tasks/view.html b/app/templates/tasks/view.html
index d47203f..df980fb 100644
--- a/app/templates/tasks/view.html
+++ b/app/templates/tasks/view.html
@@ -5,10 +5,10 @@ Working
{% endblock %}
{% block content %}
- {% if "error" in info %}
+ {% if "error" in info or info.status == "FAILURE" or info.status == "REVOKED" %}
<h1>Task Failed</h1>
- <p>{{ info. error }}</p>
+ <pre>{{ info.error }}</pre>
{% else %}
<h1>Working…</h1>
diff --git a/app/views/tasks.py b/app/views/tasks.py
index e6a5dc4..58d6d25 100644
--- a/app/views/tasks.py
+++ b/app/views/tasks.py
@@ -3,7 +3,7 @@ from flask_user import *
from flask.ext import menu
from app import app, csrf
from app.models import *
-from app.tasks import celery
+from app.tasks import celery, TaskError
from app.tasks.importtasks import getMeta
from .utils import shouldReturnJson
# from celery.result import AsyncResult
@@ -33,8 +33,14 @@ def check_task(id):
info = {
'id': id,
'status': status,
- 'error': str(result),
}
+
+ if current_user.is_authenticated and current_user.rank.atLeast(UserRank.ADMIN):
+ info["error"] = str(traceback)
+ elif str(result)[1:12] == "TaskError: ":
+ info["error"] = str(result)[12:-1]
+ else:
+ info["error"] = "Unknown server error"
else:
info = {
'id': id,