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 @@

Règles de catégorisation

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.