diff options
Diffstat (limited to 'app/blueprints/packages/packages.py')
-rw-r--r-- | app/blueprints/packages/packages.py | 32 |
1 files changed, 31 insertions, 1 deletions
diff --git a/app/blueprints/packages/packages.py b/app/blueprints/packages/packages.py index 78aa35c..464449b 100644 --- a/app/blueprints/packages/packages.py +++ b/app/blueprints/packages/packages.py @@ -23,7 +23,7 @@ from . import bp from app.models import * from app.querybuilder import QueryBuilder -from app.tasks.importtasks import importRepoScreenshot +from app.tasks.importtasks import importRepoScreenshot, updateMetaFromRelease from app.utils import * from flask_wtf import FlaskForm @@ -33,6 +33,8 @@ from wtforms.ext.sqlalchemy.fields import QuerySelectField, QuerySelectMultipleF from sqlalchemy import or_, func from sqlalchemy.orm import joinedload, subqueryload +from celery import uuid + @menu.register_menu(bp, ".mods", "Mods", order=11, endpoint_arguments_constructor=lambda: { 'type': 'mod' }) @menu.register_menu(bp, ".games", "Games", order=12, endpoint_arguments_constructor=lambda: { 'type': 'game' }) @@ -466,3 +468,31 @@ def remove_self_maintainers(package): db.session.commit() return redirect(package.getDetailsURL()) + + +@bp.route("/packages/<author>/<name>/import-meta/", methods=["POST"]) +@login_required +@is_package_page +def update_from_release(package): + if not package.checkPerm(current_user, Permission.REIMPORT_META): + flash("You don't have permission to reimport meta", "danger") + return redirect(package.getDetailsURL()) + + release = package.releases.first() + if not release: + flash("Release needed", "danger") + return redirect(package.getDetailsURL()) + + msg = "Updated meta from latest release" + addNotification(package.maintainers, current_user, + msg, package.getDetailsURL(), package) + severity = AuditSeverity.NORMAL if current_user in package.maintainers else AuditSeverity.EDITOR + addAuditLog(severity, current_user, msg, package.getDetailsURL(), package) + + db.session.commit() + + task_id = uuid() + zippath = release.url.replace("/uploads/", app.config["UPLOAD_DIR"]) + updateMetaFromRelease.apply_async((release.id, zippath), task_id=task_id) + + return redirect(url_for("tasks.check", id=task_id, r=package.getEditURL())) |