X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=app%2Fblueprints%2Fadmin%2Fadmin.py;h=bb88954a1b3c64d4cf324fd53362a3c10c72a5ea;hb=d7ecf8041af595b1ebf95ea00ee59575aa9330d6;hp=e4fc78badbac0ba62c37badbcab10ba1db0b2123;hpb=5f7be4b4337358e35c9eda4b261260a08a958b4a;p=cheatdb.git diff --git a/app/blueprints/admin/admin.py b/app/blueprints/admin/admin.py index e4fc78b..bb88954 100644 --- a/app/blueprints/admin/admin.py +++ b/app/blueprints/admin/admin.py @@ -21,7 +21,7 @@ import flask_menu as menu from . import bp from app.models import * from celery import uuid, group -from app.tasks.importtasks import importRepoScreenshot, makeVCSRelease, checkZipRelease +from app.tasks.importtasks import importRepoScreenshot, makeVCSRelease, checkZipRelease, updateMetaFromRelease from app.tasks.forumtasks import importTopicList, checkAllForumAccounts from flask_wtf import FlaskForm from wtforms import * @@ -33,10 +33,12 @@ import datetime, os def admin_page(): if request.method == "POST": action = request.form["action"] + if action == "delstuckreleases": 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() @@ -52,12 +54,31 @@ def admin_page(): time.sleep(0.1) return redirect(url_for("todo.view")) + + elif action == "reimportpackages": + tasks = [] + for package in Package.query.filter_by(approved=True, soft_deleted=False).all(): + release = package.releases.first() + if release: + zippath = release.url.replace("/uploads/", app.config["UPLOAD_DIR"]) + tasks.append(updateMetaFromRelease.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"))) + elif action == "checkusers": task = checkAllForumAccounts.delay() return redirect(url_for("tasks.check", id=task.id, r=url_for("admin.admin_page"))) + elif action == "importscreenshots": packages = Package.query \ .filter_by(soft_deleted=False) \ @@ -68,6 +89,7 @@ def admin_page(): importRepoScreenshot.delay(package.id) return redirect(url_for("admin.admin_page")) + elif action == "restore": package = Package.query.get(request.form["package"]) if package is None: @@ -76,40 +98,13 @@ def admin_page(): package.soft_deleted = False db.session.commit() return redirect(url_for("admin.admin_page")) - elif action == "modprovides": - packages = Package.query.filter_by(type=PackageType.MOD).all() - mpackage_cache = {} - for p in packages: - if len(p.provides) == 0: - p.provides.append(MetaPackage.GetOrCreate(p.name, mpackage_cache)) - db.session.commit() - return redirect(url_for("admin.admin_page")) elif action == "recalcscores": for p in Package.query.all(): p.recalcScore() db.session.commit() return redirect(url_for("admin.admin_page")) - elif action == "vcsrelease": - for package in Package.query.filter(Package.repo.isnot(None)).all(): - if package.releases.count() != 0: - continue - - rel = PackageRelease() - rel.package = package - rel.title = datetime.date.today().isoformat() - rel.url = "" - rel.task_id = uuid() - rel.approved = True - db.session.add(rel) - db.session.commit() - - makeVCSRelease.apply_async((rel.id, "master"), task_id=rel.task_id) - - msg = "Release {} created".format(rel.title) - addNotification(package.maintainers, current_user, msg, rel.getEditURL(), package) - db.session.commit() elif action == "cleanuploads": upload_dir = app.config['UPLOAD_DIR']