diff --git a/src/agenda_culturel/forms.py b/src/agenda_culturel/forms.py index d5eccba..742a2d0 100644 --- a/src/agenda_culturel/forms.py +++ b/src/agenda_culturel/forms.py @@ -114,7 +114,6 @@ class EventForm(ModelForm): self.fields['category'].queryset = self.fields['category'].queryset.order_by('name') self.fields['category'].empty_label = None self.fields['category'].initial = Category.get_default_category() - logger.warning("ça se passe là") def is_clone_from_url(self): return self.cloning @@ -160,8 +159,8 @@ class FixDuplicates(Form): def __init__(self, *args, **kwargs): edup = kwargs.pop("edup", None) - events = edup.event_set.all() - nb_events = edup.event_set.count() + events = edup.get_duplicated() + nb_events = len(events) super().__init__(*args, **kwargs) choices = [] diff --git a/src/agenda_culturel/models.py b/src/agenda_culturel/models.py index be8de14..3bcbc7c 100644 --- a/src/agenda_culturel/models.py +++ b/src/agenda_culturel/models.py @@ -216,13 +216,17 @@ class DuplicatedEvents(models.Model): verbose_name = _("Duplicated events") verbose_name_plural = _("Duplicated events") + def __init__(self, *args, **kwargs): + self.events = None + super().__init__(*args, **kwargs) + def nb_duplicated(self): return self.event_set.count() def get_duplicated(self): - return self.event_set.order_by( - "created_date" - ) + if self.events is None: + self.events = self.event_set.order_by("created_date").all() + return self.events def get_absolute_url(self): return reverse("view_duplicate", kwargs={"pk": self.pk}) @@ -235,7 +239,7 @@ class DuplicatedEvents(models.Model): def merge_into(self, other): # for all objects associated to this group - for e in self.event_set.all(): + for e in self.get_duplicated(): # change their group membership e.other_versions = other # save them @@ -248,7 +252,7 @@ class DuplicatedEvents(models.Model): # as the representative one. # if no event is given, the last one (by creation date) is selected. def fix(self, event=None): - events = self.event_set.all() + events = self.get_duplicated() if event is None: events = events.order_by("-created_date") for e in events: @@ -289,7 +293,7 @@ class DuplicatedEvents(models.Model): to_be_fixed = [] for d in DuplicatedEvents.not_fixed_qs().prefetch_related('event_set'): - comp = Event.get_comparison(d.event_set.all()) + comp = Event.get_comparison(d.get_duplicated()) similar = len([c for c in comp if not c["similar"]]) == 0 if similar: to_be_fixed.append(d) @@ -297,8 +301,11 @@ class DuplicatedEvents(models.Model): nb = len(to_be_fixed) if nb > 0: logger.warning("Removing: " + str(nb) + " similar duplicated") - for e in to_be_fixed: - logger.warning(" " + e.event_set.first().title) + for d in to_be_fixed: + if len(d.get_duplicated()) == 0: + logger.warning(" empty") + else: + logger.warning(" " + d.get_duplicated()[0].title) for s in to_be_fixed: s.fix() @@ -864,7 +871,6 @@ class Event(models.Model): self.other_versions is not None and self.other_versions.nb_duplicated() == 1 ): - logger.warning("le other est juste dans ", self.other_versions.event_set.all()) self.other_versions.delete() self.other_versions = None