diff options
| author | rubenwardy <rw@rubenwardy.com> | 2018-05-11 15:04:17 +0100 |
|---|---|---|
| committer | rubenwardy <rw@rubenwardy.com> | 2018-05-11 15:04:17 +0100 |
| commit | 92717f31dd94ad1c763641a397305de9bc143df9 (patch) | |
| tree | 3ff4f1fbfbd0f2b1490c46905b959e75dacbaafa /app/views | |
| parent | 5424f0aa3499ef9cad33ebad4db055860b8000c8 (diff) | |
| download | cheatdb-92717f31dd94ad1c763641a397305de9bc143df9.tar.xz | |
Add VCS import from Github
Diffstat (limited to 'app/views')
| -rw-r--r-- | app/views/__init__.py | 2 | ||||
| -rw-r--r-- | app/views/api.py | 35 | ||||
| -rw-r--r-- | app/views/packages.py | 17 | ||||
| -rw-r--r-- | app/views/tasks.py | 50 |
4 files changed, 62 insertions, 42 deletions
diff --git a/app/views/__init__.py b/app/views/__init__.py index 51f4908..cd4f0e6 100644 --- a/app/views/__init__.py +++ b/app/views/__init__.py @@ -30,4 +30,4 @@ def home_page(): packages = Package.query.filter_by(approved=True).all() return render_template("index.html", packages=packages) -from . import users, githublogin, packages, sass, api +from . import users, githublogin, packages, sass, tasks diff --git a/app/views/api.py b/app/views/api.py deleted file mode 100644 index 277b94e..0000000 --- a/app/views/api.py +++ /dev/null @@ -1,35 +0,0 @@ -from flask import * -from flask_user import * -from flask.ext import menu -from app import app -from app.models import * -from app.tasks import celery -from app.tasks.importtasks import getMeta -# from celery.result import AsyncResult - -from .utils import * - -@app.route("/tasks/getmeta/new/") -def new_getmeta_page(): - aresult = getMeta.delay(request.args.get("url")) - return jsonify({ - "poll_url": url_for("check_task", id=aresult.id), - }) - -@app.route("/tasks/<id>/") -def check_task(id): - result = celery.AsyncResult(id) - status = result.status - traceback = result.traceback - result = result.result - if isinstance(result, Exception): - return jsonify({ - 'status': status, - 'error': str(result), - # 'traceback': traceback, - }) - else: - return jsonify({ - 'status': status, - 'result': result, - }) diff --git a/app/views/packages.py b/app/views/packages.py index 1f9d570..c39cc8e 100644 --- a/app/views/packages.py +++ b/app/views/packages.py @@ -3,6 +3,7 @@ from flask_user import * from flask.ext import menu from app import app from app.models import * +from app.tasks.importtasks import makeVCSRelease from .utils import * @@ -369,16 +370,17 @@ def create_release_page(type, author, name): # Initial form class from post data and default data form = CreatePackageReleaseForm() if request.method == "POST" and form.validate(): - for key, value in request.files.items() : - print (key, value) if form["uploadOpt"].data == "vcs": rel = PackageRelease() rel.package = package - rel.title = form["title"].data - rel.url = form["vcsLabel"].data - # TODO: get URL to commit from branch name + rel.title = form["title"].data + rel.url = "" db.session.commit() - return redirect(package.getDetailsURL()) + + rel.task_id = makeVCSRelease.delay(rel.id, form["vcsLabel"].data).id + db.session.commit() + + return redirect(url_for("check_task", id=rel.task_id, r=package.getDetailsURL())) else: uploadedPath = doFileUpload(form.fileUpload.data, ["zip"], "a zip file") if uploadedPath is not None: @@ -412,6 +414,9 @@ def edit_release_page(type, author, name, id): if not (canEdit or canApprove): return redirect(package.getDetailsURL()) + if release.task_id is not None: + return redirect(url_for("check_task", id=release.task_id, r=release.getEditURL())) + # Initial form class from post data and default data form = EditPackageReleaseForm(formdata=request.form, obj=release) if request.method == "POST" and form.validate(): diff --git a/app/views/tasks.py b/app/views/tasks.py new file mode 100644 index 0000000..b82c326 --- /dev/null +++ b/app/views/tasks.py @@ -0,0 +1,50 @@ +from flask import * +from flask_user import * +from flask.ext import menu +from app import app +from app.models import * +from app.tasks import celery +from app.tasks.importtasks import getMeta +from .utils import shouldReturnJson +# from celery.result import AsyncResult + +from .utils import * + +@app.route("/tasks/getmeta/new/") +def new_getmeta_page(): + aresult = getMeta.delay(request.args.get("url")) + return jsonify({ + "poll_url": url_for("check_task", id=aresult.id), + }) + +@app.route("/tasks/<id>/") +def check_task(id): + result = celery.AsyncResult(id) + status = result.status + traceback = result.traceback + result = result.result + + info = None + if isinstance(result, Exception): + info = { + 'status': status, + 'error': str(result), + } + else: + info = { + 'status': status, + 'result': result, + } + + if shouldReturnJson(): + return jsonify(info) + else: + r = request.args.get("r") + if r is None: + abort(422) + + if status == "SUCCESS": + flash("Task complete!", "success") + return redirect(r) + else: + return render_template("tasks/view.html", info=info) |
