diff --git a/src/agenda_culturel/models.py b/src/agenda_culturel/models.py index d566764..5c324b7 100644 --- a/src/agenda_culturel/models.py +++ b/src/agenda_culturel/models.py @@ -859,31 +859,37 @@ class CategorisationRule(models.Model): def match(self, event): + result = False + if self.description_contains: if self.desc_exact: - if self.description_contains in event.description: - return True + result = self.description_contains in event.description else: - if remove_accents(self.description_contains).lower() in remove_accents(event.description).lower(): - return True + result = remove_accents(self.description_contains).lower() in remove_accents(event.description).lower() + if not result: + return False if self.title_contains: if self.title_exact: - if self.title_contains in event.title: - return True + t_result = self.title_contains in event.title else: - if remove_accents(self.title_contains).lower() in remove_accents(event.title).lower(): - return True + t_result = remove_accents(self.title_contains).lower() in remove_accents(event.title).lower() + if result and not t_result: + return False + result = t_result if self.location_contains: if self.loc_exact: - if self.location_contains in event.location: - return True + l_result = self.location_contains in event.location else: - if remove_accents(self.location_contains).lower() in remove_accents(event.location).lower(): - return True + l_result = remove_accents(self.location_contains).lower() in remove_accents(event.location).lower() - return False + if result and not l_result: + return False + result = l_result + + + return result class ModerationQuestion(models.Model): diff --git a/src/agenda_culturel/templates/agenda_culturel/categorisation_rules.html b/src/agenda_culturel/templates/agenda_culturel/categorisation_rules.html index 30fb50a..3cbd68d 100644 --- a/src/agenda_culturel/templates/agenda_culturel/categorisation_rules.html +++ b/src/agenda_culturel/templates/agenda_culturel/categorisation_rules.html @@ -18,7 +18,7 @@
Chaque règle est considérée dans l'ordre croissant des poids. La première règle satisfaite est appliquée par un changement de catégorie, et on les suivantes ne sont pas appliquées.
-Une règle est satisfaite si au moins une des conditions est satisfaite.
+Une règle est satisfaite si toutes ses conditions sont satisfaites.
Les règles sont appliquées à l'import sur tous les événements, et à la demande sur les événements sans catégorie.