agendas: update existing agenda on import (#59515)
This commit is contained in:
parent
02837f7632
commit
0e4689a139
|
@ -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:
|
||||
|
|
|
@ -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'
|
||||
|
|
Loading…
Reference in New Issue