From 69efcf26507de0b1732bac9363f350aa71dd656b Mon Sep 17 00:00:00 2001 From: Frisk Date: Wed, 26 May 2021 15:38:36 +0200 Subject: [PATCH] Fixed both issues, partially returned the older code --- extensions/hooks/edit_alerts.py | 32 ++++++++++++++++++++++++++------ 1 file changed, 26 insertions(+), 6 deletions(-) diff --git a/extensions/hooks/edit_alerts.py b/extensions/hooks/edit_alerts.py index 87105e7..c0f0252 100644 --- a/extensions/hooks/edit_alerts.py +++ b/extensions/hooks/edit_alerts.py @@ -66,6 +66,7 @@ edit_alerts = settings.get("hooks", {}).get("edit_alerts", []) class RequirementNotMet(Exception): + """Exception raised when the requirement is not met and another requirement must be processed""" pass @@ -73,9 +74,11 @@ def check_group_requirements(change_data: list, settings_data: list): """This function resolves group discussions and raises RequirementNotMet when requirement is not met""" if settings_data: for required_group in settings_data: - for required_item in required_group: - if required_item not in change_data: - raise RequirementNotMet + # test all items in required_group are in change_data (one group fulfills the requirement) return the function + if all([required_item in change_data for required_item in required_group]): + return + raise RequirementNotMet + @post_hook @@ -98,9 +101,26 @@ def edit_alerts_hook(message, metadata, context, change): raise RequirementNotMet check_group_requirements(change.get("tags", []), requirement.get("tags", [])) if requirement.get("categories", []): - for reqCats in requirement.get("categories", []): - check_group_requirements(context.categories.new, reqCats.get("added", [])) - check_group_requirements(context.categories.removed, reqCats.get("removed", [])) + for req_cats in requirement.get("categories", []): + if req_cats.get("added", []): + for added_cats in req_cats.get("added", []): + for added_cat in added_cats: + if added_cat not in context.categories.new: + break + else: + break + else: + raise RequirementNotMet + if req_cats.get("removed", []): + for removed_cats in req_cats.get("removed", []): + for removed_cat in removed_cats: + if removed_cat not in context.categories.removed: + break + else: + break + else: + raise RequirementNotMet + break except RequirementNotMet: continue else: