diff --git a/src/agenda_culturel/models.py b/src/agenda_culturel/models.py index 44abc0d..430756e 100644 --- a/src/agenda_culturel/models.py +++ b/src/agenda_culturel/models.py @@ -1656,10 +1656,12 @@ class Event(models.Model): return result def has_recurrences(self): - # TODO: see https://forge.chapril.org/jmtrivial/agenda_culturel/issues/65 - return self.recurrences is not None and len(self.recurrences.rrules) != 0 + return self.recurrences is not None and ( + len(self.recurrences.rrules) != 0 or len(self.recurrences.rdates) != 0 + ) def update_recurrence_dtstartend(self): + # get start and end date and time sday = ( date.fromisoformat(self.start_day) if isinstance(self.start_day, str) @@ -1681,6 +1683,7 @@ class Event(models.Model): else time() if self.end_time is None else self.end_time ) + # updating start and end date for database efficiency self.recurrence_dtstart = datetime.combine(sday, stime) if not self.has_recurrences(): if self.end_day is None: @@ -1689,7 +1692,8 @@ class Event(models.Model): self.recurrence_dtend = datetime.combine(eday, etime) else: if ( - self.recurrences.rrules[0].until is None + len(self.recurrences.rrules) > 0 + and self.recurrences.rrules[0].until is None and self.recurrences.rrules[0].count is None ): self.recurrence_dtend = None diff --git a/src/agenda_culturel/templates/agenda_culturel/single-event/event-elegant-inc.html b/src/agenda_culturel/templates/agenda_culturel/single-event/event-elegant-inc.html index e610997..ec50fb0 100644 --- a/src/agenda_culturel/templates/agenda_culturel/single-event/event-elegant-inc.html +++ b/src/agenda_culturel/templates/agenda_culturel/single-event/event-elegant-inc.html @@ -96,12 +96,24 @@ {% if event.has_recurrences %} {% endif %} diff --git a/src/agenda_culturel/templates/agenda_culturel/single-event/event-in-flat-list-inc.html b/src/agenda_culturel/templates/agenda_culturel/single-event/event-in-flat-list-inc.html index 58562bf..558ce28 100644 --- a/src/agenda_culturel/templates/agenda_culturel/single-event/event-in-flat-list-inc.html +++ b/src/agenda_culturel/templates/agenda_culturel/single-event/event-in-flat-list-inc.html @@ -63,23 +63,35 @@ Événement de portée locale

{% endif %} + {% if event.has_recurrences %} + + {% endif %} -{% if event.has_recurrences %} - -{% endif %} {% if event.tags %}

{% picto_from_name "repeat" %} - - {% for r in event.recurrences.rrules %} - {{ r.to_text }} - {% if not forloop.first %},{% endif %} - {% endfor %} - , depuis le - {% if event.recurrences.dtstart.date %} - {{ event.recurrences.dtstart.date }} - {% else %} - {{ event.start_day }} + {% if event.recurrences.rrules %} + {% for r in event.recurrences.rrules %} + {{ r.to_text }} + {% if not forloop.first %},{% endif %} + {% endfor %} + depuis le + {% if event.recurrences.dtstart.date %} + {{ event.recurrences.dtstart.date }} + {% else %} + {{ event.start_day }} + {% endif %} + {% endif %} + {% if event.recurrences.rdates %} + les {{ event.recurrences.dtstart.date }} + {% for d in event.recurrences.rdates %} + {% if forloop.last %} + et + {% else %} + , + {% endif %} + {{ d.date }} + {% endfor %} {% endif %}

{% endif %} diff --git a/src/agenda_culturel/templates/agenda_culturel/single-event/event-single-inc.html b/src/agenda_culturel/templates/agenda_culturel/single-event/event-single-inc.html index 46fec4b..9b0d4ac 100644 --- a/src/agenda_culturel/templates/agenda_culturel/single-event/event-single-inc.html +++ b/src/agenda_culturel/templates/agenda_culturel/single-event/event-single-inc.html @@ -179,24 +179,36 @@ {% if event.has_recurrences %}