agendas: export default_view for all agendas (#54159)

This commit is contained in:
Lauréline Guérin 2021-05-21 11:57:11 +02:00
parent 306b08cfe7
commit aecdcb82b4
No known key found for this signature in database
GPG Key ID: 1FAB9B9B4F93D473
3 changed files with 48 additions and 4 deletions

View File

@ -0,0 +1,20 @@
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('agendas', '0089_agenda_event_display_template'),
]
operations = [
migrations.AlterField(
model_name='agenda',
name='default_view',
field=models.CharField(
choices=[('day', 'Day view'), ('month', 'Month view'), ('open_events', 'Open events')],
max_length=20,
verbose_name='Default view',
),
),
]

View File

@ -200,7 +200,7 @@ class Agenda(models.Model):
null=True,
on_delete=models.SET_NULL,
)
default_view = models.CharField(_('Default view'), max_length=20, choices=AGENDA_VIEWS, default='month')
default_view = models.CharField(_('Default view'), max_length=20, choices=AGENDA_VIEWS)
booking_form_url = models.CharField(
_('Booking form URL'), max_length=200, blank=True, validators=[django_template_validator]
)
@ -241,8 +241,11 @@ class Agenda(models.Model):
self.minimal_booking_delay = 1
if self.maximal_booking_delay is None:
self.maximal_booking_delay = 8 * 7
if self.kind != 'events' and self.pk is None:
self.default_view = 'day'
if not self.default_view:
if self.kind == 'events':
self.default_view = 'month'
else:
self.default_view = 'day'
super(Agenda, self).save(*args, **kwargs)
if created and self.kind == 'events':
desk = Desk.objects.create(agenda=self, slug='_exceptions_holder')
@ -354,11 +357,11 @@ class Agenda(models.Model):
'edit': self.edit_role.name if self.edit_role else None,
},
'resources': [x.slug for x in self.resources.all()],
'default_view': self.default_view,
}
if hasattr(self, 'reminder_settings'):
agenda['reminder_settings'] = self.reminder_settings.export_json()
if self.kind == 'events':
agenda['default_view'] = self.default_view
agenda['booking_form_url'] = self.booking_form_url
agenda['events'] = [x.export_json() for x in self.event_set.filter(primary_event__isnull=True)]
if hasattr(self, 'notifications_settings'):

View File

@ -274,6 +274,27 @@ def test_import_export_recurring_event(app, freezer):
assert Event.objects.filter(primary_event=event, places=42).count() == 7
def test_import_export_meetings_agenda_options(app):
agenda = Agenda.objects.create(
label='Foo Bar',
kind='meetings',
default_view='month',
)
output = get_output_of_command('export_site')
assert len(json.loads(output)['agendas']) == 1
import_site(data={}, clean=True)
with tempfile.NamedTemporaryFile() as f:
f.write(force_bytes(output))
f.flush()
call_command('import_site', f.name)
assert Agenda.objects.count() == 1
agenda = Agenda.objects.first()
assert agenda.default_view == 'month'
def test_import_export_permissions(app):
meetings_agenda = Agenda.objects.create(label='Foo Bar', kind='meetings')
group1 = Group.objects.create(name=u'gé1')