diff --git a/app/blueprints/admin/actions.py b/app/blueprints/admin/actions.py index 1afadcc8..51e31db7 100644 --- a/app/blueprints/admin/actions.py +++ b/app/blueprints/admin/actions.py @@ -16,11 +16,10 @@ import os -import sys from typing import List import requests -from celery import group +from celery import group, uuid from flask import redirect, url_for, flash, current_app, jsonify from sqlalchemy import or_, and_ @@ -29,7 +28,7 @@ from app.models import PackageRelease, db, Package, PackageState, PackageScreens NotificationType, PackageUpdateConfig, License, UserRank, PackageType, PackageGameSupport from app.tasks.emails import send_pending_digests from app.tasks.forumtasks import importTopicList, checkAllForumAccounts -from app.tasks.importtasks import importRepoScreenshot, checkZipRelease, check_for_updates +from app.tasks.importtasks import importRepoScreenshot, checkZipRelease, check_for_updates, updateAllGameSupport from app.utils import addNotification, get_system_user from app.utils.image import get_image_size @@ -328,9 +327,9 @@ def update_screenshot_sizes(): @action("Detect game support") def detect_game_support(): - resolver = GameSupportResolver(db.session) - resolver.update_all() - db.session.commit() + task_id = uuid() + updateAllGameSupport.apply_async((), task_id=task_id) + return redirect(url_for("tasks.check", id=task_id, r=url_for("admin.admin_page"))) @action("Send pending notif digests") diff --git a/app/tasks/importtasks.py b/app/tasks/importtasks.py index a0578a0d..eded839e 100644 --- a/app/tasks/importtasks.py +++ b/app/tasks/importtasks.py @@ -76,6 +76,13 @@ def getMeta(urlstr, author): return result +@celery.task() +def updateAllGameSupport(): + resolver = GameSupportResolver(db.session) + resolver.update_all() + db.session.commit() + + def postReleaseCheckUpdate(self, release: PackageRelease, path): try: tree = build_tree(path, expected_type=ContentType[release.package.type.name],