Projet

Général

Profil

0001-manager-use-slug-instead-of-start_datetime-to-identi.patch

Valentin Deniaud, 16 mars 2021 17:42

Télécharger (2,63 ko)

Voir les différences:

Subject: [PATCH 1/2] manager: use slug instead of start_datetime to identify
 event recurrence (#51778)

 chrono/agendas/models.py | 11 +++++++++--
 chrono/manager/forms.py  |  5 +----
 2 files changed, 10 insertions(+), 6 deletions(-)
chrono/agendas/models.py
594 594
        excluded_datetimes = collections.defaultdict(list)
595 595
        for event in events:
596 596
            if event.primary_event_id:
597
                excluded_datetimes[event.primary_event_id].append(make_naive(event.start_datetime))
597
                excluded_datetimes[event.primary_event_id].append(event.datetime_slug)
598 598

  
599 599
        events = [
600 600
            e for e in events if (not e.cancelled or include_cancelled) and (not e.full or include_full)
......
641 641
        report.events.set(events)
642 642

  
643 643
        # add recurrences
644
        excluded_datetimes = [make_naive(dt) for dt in recurrences.values_list('start_datetime', flat=True)]
644
        excluded_datetimes = [event.datetime_slug for event in recurrences]
645 645
        Event.create_events_recurrences(
646 646
            recurring_events.filter(recurrence_end_date__isnull=False), excluded_datetimes
647 647
        )
......
1487 1487
            )
1488 1488
        Event.objects.bulk_create(recurrences)
1489 1489

  
1490
    @property
1491
    def datetime_slug(self):
1492
        assert self.primary_event is not None, 'only for event recurrence'
1493

  
1494
        datetime_part = self.slug.rsplit('--')[-1]
1495
        return datetime.datetime.strptime(datetime_part, '%Y-%m-%d-%H%M')
1496

  
1490 1497

  
1491 1498
class BookingColor(models.Model):
1492 1499
    COLOR_COUNT = 8
chrono/manager/forms.py
238 238
                self.instance.recurrences.filter(
239 239
                    start_datetime__gt=self.instance.recurrence_end_date
240 240
                ).delete()
241
                excluded_datetimes = [
242
                    make_naive(dt)
243
                    for dt in self.instance.recurrences.values_list('start_datetime', flat=True)
244
                ]
241
                excluded_datetimes = [event.datetime_slug for event in self.instance.recurrences.all()]
245 242
                self.instance.create_all_recurrences(excluded_datetimes)
246 243
        return self.instance
247 244

  
248
-