From 65e89296895912753f6b448ab34014d5e1d577e8 Mon Sep 17 00:00:00 2001 From: rubenwardy Date: Mon, 2 Jan 2023 19:19:33 +0000 Subject: [PATCH] Fix game support errors not showing to users Fixes #394 --- app/blueprints/packages/packages.py | 19 +++++++++++-------- app/tasks/importtasks.py | 23 +++++++++++++---------- 2 files changed, 24 insertions(+), 18 deletions(-) diff --git a/app/blueprints/packages/packages.py b/app/blueprints/packages/packages.py index 05956301..42f4591d 100644 --- a/app/blueprints/packages/packages.py +++ b/app/blueprints/packages/packages.py @@ -667,15 +667,18 @@ def game_support(package): detect_update_needed = False if current_user not in package.maintainers: - resolver = GameSupportResolver(db.session) + try: + resolver = GameSupportResolver(db.session) - game_is_supported = {} - for game in get_games_from_csv(db.session, form.supported.data or ""): - game_is_supported[game.id] = True - for game in get_games_from_csv(db.session, form.unsupported.data or ""): - game_is_supported[game.id] = False - resolver.set_supported(package, game_is_supported, 11) - detect_update_needed = True + game_is_supported = {} + for game in get_games_from_csv(db.session, form.supported.data or ""): + game_is_supported[game.id] = True + for game in get_games_from_csv(db.session, form.unsupported.data or ""): + game_is_supported[game.id] = False + resolver.set_supported(package, game_is_supported, 11) + detect_update_needed = True + except LogicError as e: + flash(e.message, "danger") next_url = package.getURL("packages.game_support") diff --git a/app/tasks/importtasks.py b/app/tasks/importtasks.py index c56ce35e..e9dad5ec 100644 --- a/app/tasks/importtasks.py +++ b/app/tasks/importtasks.py @@ -146,18 +146,21 @@ def postReleaseCheckUpdate(self, release: PackageRelease, path): # Update game support if package.type == PackageType.MOD: - resolver = GameSupportResolver(db.session) + try: + resolver = GameSupportResolver(db.session) - game_is_supported = {} - if "supported_games" in tree.meta: - for game in get_games_from_csv(db.session, tree.meta["supported_games"]): - game_is_supported[game.id] = True - if "unsupported_games" in tree.meta: - for game in get_games_from_csv(db.session, tree.meta["unsupported_games"]): - game_is_supported[game.id] = False + game_is_supported = {} + if "supported_games" in tree.meta: + for game in get_games_from_csv(db.session, tree.meta["supported_games"]): + game_is_supported[game.id] = True + if "unsupported_games" in tree.meta: + for game in get_games_from_csv(db.session, tree.meta["unsupported_games"]): + game_is_supported[game.id] = False - resolver.set_supported(package, game_is_supported, 10) - resolver.update(package) + resolver.set_supported(package, game_is_supported, 10) + resolver.update(package) + except LogicError as e: + raise TaskError(e.message) return tree