agendas: update existing agenda on import (#59515)

This commit is contained in:
Valentin Deniaud 2021-12-09 09:48:46 +01:00
parent 02837f7632
commit 0e4689a139
2 changed files with 20 additions and 4 deletions

View File

@ -448,10 +448,7 @@ class Agenda(models.Model):
raise AgendaImportError(
_('Missing "%s" absence reasons group') % data['absence_reasons_group']
)
agenda, created = cls.objects.get_or_create(slug=data['slug'], defaults=data)
if not created:
for k, v in data.items():
setattr(agenda, k, v)
agenda, created = cls.objects.update_or_create(slug=data['slug'], defaults=data)
if overwrite:
AgendaReminderSettings.objects.filter(agenda=agenda).delete()
if reminder_settings:

View File

@ -1039,3 +1039,22 @@ def test_import_export_exception_dst_change(app):
exception = TimePeriodException.objects.get()
# dst was forced on import
assert exception.start_datetime == start - datetime.timedelta(hours=1)
def test_import_export_agenda_update(app):
agenda = Agenda.objects.create(label='Foo Bar', kind='meetings')
output = get_output_of_command('export_site')
data = json.loads(output)
assert len(['agendas']) == 1
import_site(data={}, clean=True)
import_site(data)
agenda = Agenda.objects.get()
assert agenda.label == 'Foo Bar'
data['agendas'][0]['label'] = 'Bar Foo'
import_site(data)
agenda = Agenda.objects.get()
assert agenda.label == 'Bar Foo'