agendas: do not set recurrence end date on event recurrences (#53505)
This commit is contained in:
parent
000ea8dc07
commit
e4cdc61474
|
@ -0,0 +1,22 @@
|
|||
# Generated by Django 2.2.19 on 2021-04-28 13:33
|
||||
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
def remove_recurrence_end_date(apps, schema_editor):
|
||||
Event = apps.get_model('agendas', 'Event')
|
||||
|
||||
Event.objects.filter(primary_event__isnull=False, recurrence_end_date__isnull=False).update(
|
||||
recurrence_end_date=None
|
||||
)
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('agendas', '0078_absence_reasons'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RunPython(remove_recurrence_end_date, migrations.RunPython.noop),
|
||||
]
|
|
@ -211,7 +211,7 @@ class EventForm(forms.ModelForm):
|
|||
update_fields = {
|
||||
field: value
|
||||
for field, value in self.cleaned_data.items()
|
||||
if field not in self.protected_fields
|
||||
if field != 'recurrence_end_date' and field not in self.protected_fields
|
||||
}
|
||||
self.instance.recurrences.update(**update_fields)
|
||||
|
||||
|
|
|
@ -248,6 +248,10 @@ def test_edit_recurring_event(settings, app, admin_user, freezer):
|
|||
event_recurrence.refresh_from_db()
|
||||
assert event_recurrence.places == 20
|
||||
|
||||
# but some fields should not be updated
|
||||
assert event_recurrence.slug != event.slug
|
||||
assert not event_recurrence.repeat
|
||||
|
||||
# changing recurrence attribute removes event recurrences
|
||||
resp = app.get('/manage/agendas/%s/events/%s/edit' % (agenda.id, event.id))
|
||||
resp.form['repeat'] = ''
|
||||
|
@ -319,6 +323,8 @@ def test_edit_recurring_event_with_end_date(settings, app, admin_user, freezer):
|
|||
resp = resp.form.submit()
|
||||
assert Event.objects.filter(primary_event=event).count() == 5
|
||||
assert Event.objects.filter(primary_event=event, start_datetime=recurrence.start_datetime).count() == 1
|
||||
# ensure recurrence_end_date has not been propagated
|
||||
assert not Event.objects.filter(primary_event=event, recurrence_end_date__isnull=False).exists()
|
||||
|
||||
# editing recurrence_end_date is permitted as long as bookings are not impacted
|
||||
event_recurrence = Event.objects.get(primary_event=event, start_datetime__day=15)
|
||||
|
|
Loading…
Reference in New Issue