aboutsummaryrefslogtreecommitdiff
path: root/app/blueprints/packages/packages.py
diff options
context:
space:
mode:
Diffstat (limited to 'app/blueprints/packages/packages.py')
-rw-r--r--app/blueprints/packages/packages.py32
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()))