Projet

Général

Profil

0001-agendas-do-not-set-recurrence-end-date-on-event-recu.patch

Valentin Deniaud, 28 avril 2021 15:42

Télécharger (3,2 ko)

Voir les différences:

Subject: [PATCH] agendas: do not set recurrence end date on event recurrences
 (#53505)

 .../migrations/0079_auto_20210428_1533.py     | 22 +++++++++++++++++++
 chrono/manager/forms.py                       |  2 +-
 tests/manager/test_event.py                   |  6 +++++
 3 files changed, 29 insertions(+), 1 deletion(-)
 create mode 100644 chrono/agendas/migrations/0079_auto_20210428_1533.py
chrono/agendas/migrations/0079_auto_20210428_1533.py
1
# Generated by Django 2.2.19 on 2021-04-28 13:33
2

  
3
from django.db import migrations
4

  
5

  
6
def remove_recurrence_end_date(apps, schema_editor):
7
    Event = apps.get_model('agendas', 'Event')
8

  
9
    Event.objects.filter(primary_event__isnull=False, recurrence_end_date__isnull=False).update(
10
        recurrence_end_date=None
11
    )
12

  
13

  
14
class Migration(migrations.Migration):
15

  
16
    dependencies = [
17
        ('agendas', '0078_absence_reasons'),
18
    ]
19

  
20
    operations = [
21
        migrations.RunPython(remove_recurrence_end_date, migrations.RunPython.noop),
22
    ]
chrono/manager/forms.py
211 211
                update_fields = {
212 212
                    field: value
213 213
                    for field, value in self.cleaned_data.items()
214
                    if field not in self.protected_fields
214
                    if field != 'recurrence_end_date' and field not in self.protected_fields
215 215
                }
216 216
                self.instance.recurrences.update(**update_fields)
217 217

  
tests/manager/test_event.py
248 248
    event_recurrence.refresh_from_db()
249 249
    assert event_recurrence.places == 20
250 250

  
251
    # but some fields should not be updated
252
    assert event_recurrence.slug != event.slug
253
    assert not event_recurrence.repeat
254

  
251 255
    # changing recurrence attribute removes event recurrences
252 256
    resp = app.get('/manage/agendas/%s/events/%s/edit' % (agenda.id, event.id))
253 257
    resp.form['repeat'] = ''
......
319 323
    resp = resp.form.submit()
320 324
    assert Event.objects.filter(primary_event=event).count() == 5
321 325
    assert Event.objects.filter(primary_event=event, start_datetime=recurrence.start_datetime).count() == 1
326
    # ensure recurrence_end_date has not been propagated
327
    assert not Event.objects.filter(primary_event=event, recurrence_end_date__isnull=False).exists()
322 328

  
323 329
    # editing recurrence_end_date is permitted as long as bookings are not impacted
324 330
    event_recurrence = Event.objects.get(primary_event=event, start_datetime__day=15)
325
-