]> git.lizzy.rs Git - cheatdb.git/blobdiff - app/blueprints/packages/releases.py
Optimise SQL queries
[cheatdb.git] / app / blueprints / packages / releases.py
index 6ef19d2082e01073db89baa944311bc281dd6861..669f4b12049d96ddcddb3ae0d0ff42ed48bf40c1 100644 (file)
@@ -22,7 +22,7 @@ from . import bp
 
 from app.rediscache import has_key, set_key, make_download_key
 from app.models import *
-from app.tasks.importtasks import makeVCSRelease
+from app.tasks.importtasks import makeVCSRelease, checkZipRelease
 from app.utils import *
 
 from celery import uuid
@@ -98,22 +98,25 @@ def create_release(package):
 
                        return redirect(url_for("tasks.check", id=rel.task_id, r=rel.getEditURL()))
                else:
-                       uploadedPath = doFileUpload(form.fileUpload.data, "zip", "a zip file")
-                       if uploadedPath is not None:
+                       uploadedUrl, uploadedPath = doFileUpload(form.fileUpload.data, "zip", "a zip file")
+                       if uploadedUrl is not None:
                                rel = PackageRelease()
                                rel.package = package
                                rel.title = form["title"].data
-                               rel.url = uploadedPath
+                               rel.url = uploadedUrl
+                               rel.task_id = uuid()
                                rel.min_rel = form["min_rel"].data.getActual()
                                rel.max_rel = form["max_rel"].data.getActual()
-                               rel.approve(current_user)
                                db.session.add(rel)
                                db.session.commit()
 
+                               checkZipRelease.apply_async((rel.id, uploadedPath), task_id=rel.task_id)
+
                                msg = "{}: Release {} created".format(package.title, rel.title)
                                triggerNotif(package.author, current_user, msg, rel.getEditURL())
                                db.session.commit()
-                               return redirect(package.getDetailsURL())
+
+                               return redirect(url_for("tasks.check", id=rel.task_id, r=rel.getEditURL()))
 
        return render_template("packages/release_new.html", package=package, form=form)
 
@@ -163,6 +166,11 @@ def edit_release(package, id):
 
        # Initial form class from post data and default data
        form = EditPackageReleaseForm(formdata=request.form, obj=release)
+
+       # HACK: fix bug in wtforms
+       if request.method == "GET":
+               form.approved.data = release.approved
+
        if request.method == "POST" and form.validate():
                wasApproved = release.approved
                if canEdit: