]> git.lizzy.rs Git - cheatdb.git/commitdiff
Add admin option to check all releases
authorrubenwardy <rw@rubenwardy.com>
Sun, 19 Jan 2020 01:59:00 +0000 (01:59 +0000)
committerrubenwardy <rw@rubenwardy.com>
Sun, 19 Jan 2020 02:20:20 +0000 (02:20 +0000)
app/blueprints/admin/admin.py
app/blueprints/packages/releases.py
app/tasks/importtasks.py
app/templates/admin/list.html
requirements.txt

index c3591f533710a5669b30358c04cf5ba0d7193471..6de85d0973bbc84771c8b6f65ccb30d4d4cbc383 100644 (file)
@@ -20,8 +20,8 @@ from flask_user import *
 import flask_menu as menu
 from . import bp
 from app.models import *
-from celery import uuid
-from app.tasks.importtasks import importRepoScreenshot, importAllDependencies, makeVCSRelease
+from celery import uuid, group
+from app.tasks.importtasks import importRepoScreenshot, importAllDependencies, makeVCSRelease, checkZipRelease
 from app.tasks.forumtasks  import importTopicList, checkAllForumAccounts
 from flask_wtf import FlaskForm
 from wtforms import *
@@ -37,6 +37,21 @@ def admin_page():
                        PackageRelease.query.filter(PackageRelease.task_id != None).delete()
                        db.session.commit()
                        return redirect(url_for("admin.admin_page"))
+               elif action == "checkreleases":
+                       releases = PackageRelease.query.filter(PackageRelease.url.like("/uploads/%")).all()
+
+                       tasks = []
+                       for release in releases:
+                               zippath = release.url.replace("/uploads/", app.config["UPLOAD_DIR"])
+                               tasks.append(checkZipRelease.s(release.id, zippath))
+
+                       result = group(tasks).apply_async()
+
+                       while not result.ready():
+                               import time
+                               time.sleep(0.1)
+
+                       return redirect(url_for("todo.view"))
                elif action == "importmodlist":
                        task = importTopicList.delay()
                        return redirect(url_for("tasks.check", id=task.id, r=url_for("todo.topics")))
index e160fcf70cc4f5623825ddd8f48f6750c3683c40..35b27c18d7a602b6f7b06731a60293a226305df9 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, checkZIPRelease
+from app.tasks.importtasks import makeVCSRelease, checkZipRelease
 from app.utils import *
 
 from celery import uuid
@@ -110,7 +110,7 @@ def create_release(package):
                                db.session.add(rel)
                                db.session.commit()
 
-                               checkZIPRelease.apply_async((rel.id, uploadedPath), task_id=rel.task_id)
+                               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())
index 3c0b0eddc1a1cfe879582c0c0de10cbb78fe43e7..21e931e367b847526c4214e35a3d6e571af6450b 100644 (file)
@@ -229,8 +229,8 @@ def makeVCSReleaseFromGithub(id, branch, release, url):
        return release.url
 
 
-@celery.task()
-def checkZIPRelease(id, path):
+@celery.task(bind=True)
+def checkZipRelease(self, id, path):
        release = PackageRelease.query.get(id)
        if release is None:
                raise TaskError("No such release!")
@@ -246,6 +246,13 @@ def checkZIPRelease(id, path):
                        tree = build_tree(temp, expected_type=ContentType[release.package.type.name], \
                                author=release.package.author.username, name=release.package.name)
                except MinetestCheckError as err:
+                       if "Fails validation" not in release.title:
+                               release.title += " (Fails validation)"
+
+                       release.task_id = self.request.id
+                       release.approved = False
+                       db.session.commit()
+
                        raise TaskError(str(err))
 
                release.task_id = None
index 1048a889a6fa45b6f45e5f718c09d77fbe8a08b3..48158df8ab3b3e532e93f82202e2f06da939e773 100644 (file)
@@ -20,6 +20,7 @@
                        <input type="hidden" name="csrf_token" value="{{ csrf_token() }}" />
                        <select name="action">
                                <option value="delstuckreleases" selected>Delete stuck releases</option>
+                               <option value="checkreleases">Validate all Zip releases</option>
                                <option value="importmodlist">Import forum topics</option>
                                <option value="recalcscores">Recalculate package scores</option>
                                <option value="checkusers">Check forum users</option>
index 6f236bc3375115ab71ea9f2627af3a08a4ab70a6..534a2deaf36f8b612570be5c03342c3fa2718f88 100644 (file)
@@ -12,12 +12,12 @@ GitHub-Flask~=3.2
 SQLAlchemy-Searchable==1.0.3
 
 beautifulsoup4~=4.6
-celery==4.1.1
-kombu==4.2.0
+celery~=4.4
+kombu~=4.6
 GitPython~=2.1
 git-archive-all~=1.20
 lxml~=4.2
 pillow~=6.2
 pyScss~=1.3
-redis==2.10.6
+redis~=3.3
 psycopg2~=2.7