agenda: fix event import (#53838)

This commit is contained in:
Lauréline Guérin 2021-05-11 14:20:14 +02:00
parent d66778cfb8
commit b8105d19ff
No known key found for this signature in database
GPG Key ID: 1FAB9B9B4F93D473
2 changed files with 15 additions and 3 deletions

View File

@ -1348,7 +1348,7 @@ class Event(models.Model):
)
data = clean_import_data(cls, data)
if data.get('slug'):
event, _ = cls.objects.update_or_create(slug=data['slug'], defaults=data)
event, _ = cls.objects.update_or_create(agenda=data['agenda'], slug=data['slug'], defaults=data)
else:
event = cls(**data)
event.save()

View File

@ -170,6 +170,7 @@ def test_import_export_events_agenda_options(app):
def test_import_export_event_details(app):
agenda = Agenda.objects.create(label='Foo Bar', kind='events')
Event.objects.create(
slug='event',
agenda=agenda,
description='description',
pricing='100',
@ -178,9 +179,17 @@ def test_import_export_event_details(app):
places=42,
start_datetime=now(),
)
# check event (agenda, slug) unicity
agenda2 = Agenda.objects.create(label='Foo Bar 2', kind='events')
Event.objects.create(
slug='event',
agenda=agenda2,
places=42,
start_datetime=now(),
)
output = get_output_of_command('export_site')
assert len(json.loads(output)['agendas']) == 1
assert len(json.loads(output)['agendas']) == 2
import_site(data={}, clean=True)
with tempfile.NamedTemporaryFile() as f:
@ -188,12 +197,15 @@ def test_import_export_event_details(app):
f.flush()
call_command('import_site', f.name)
assert Agenda.objects.count() == 1
assert Agenda.objects.count() == 2
assert Event.objects.count() == 2
first_imported_event = Agenda.objects.get(label='Foo Bar').event_set.first()
assert first_imported_event.slug == 'event'
assert first_imported_event.description == 'description'
assert first_imported_event.pricing == '100'
assert first_imported_event.url == 'https://example.net/'
assert first_imported_event.publication_date == datetime.date(2020, 5, 11)
assert Agenda.objects.get(label='Foo Bar 2').event_set.first().slug == 'event'
def test_import_export_recurring_event(app, freezer):