agendas: stop creating exceptions holder desk in the 'save' method (#55279)
This commit is contained in:
parent
3365a3f372
commit
886f316e5c
|
@ -256,7 +256,6 @@ class Agenda(models.Model):
|
|||
return self.label
|
||||
|
||||
def save(self, *args, **kwargs):
|
||||
created = bool(not self.pk)
|
||||
if not self.slug:
|
||||
self.slug = generate_slug(self)
|
||||
if self.kind != 'virtual':
|
||||
|
@ -270,9 +269,6 @@ class Agenda(models.Model):
|
|||
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')
|
||||
desk.import_timeperiod_exceptions_from_settings()
|
||||
|
||||
@property
|
||||
def base_slug(self):
|
||||
|
@ -2309,7 +2305,9 @@ class TimePeriodExceptionSource(models.Model):
|
|||
@classmethod
|
||||
def import_json(cls, data):
|
||||
data = clean_import_data(cls, data)
|
||||
source, _ = cls.objects.update_or_create(**data)
|
||||
desk = data.pop('desk')
|
||||
settings_slug = data.pop('settings_slug')
|
||||
source, _ = cls.objects.update_or_create(desk=desk, settings_slug=settings_slug, defaults=data)
|
||||
if source.enabled:
|
||||
source.enable()
|
||||
|
||||
|
|
|
@ -754,6 +754,13 @@ class AgendaAddView(CreateView):
|
|||
def get_success_url(self):
|
||||
return reverse('chrono-manager-agenda-settings', kwargs={'pk': self.object.id})
|
||||
|
||||
def form_valid(self, form):
|
||||
result = super().form_valid(form)
|
||||
if self.object.kind == 'events':
|
||||
desk = Desk.objects.create(agenda=self.object, slug='_exceptions_holder')
|
||||
desk.import_timeperiod_exceptions_from_settings()
|
||||
return result
|
||||
|
||||
|
||||
agenda_add = AgendaAddView.as_view()
|
||||
|
||||
|
@ -1585,7 +1592,9 @@ class AgendaSettings(ManagedAgendaMixin, DetailView):
|
|||
context['has_recurring_events'] = self.agenda.event_set.filter(
|
||||
recurrence_days__isnull=False
|
||||
).exists()
|
||||
desk = Desk.objects.get(agenda=self.agenda, slug='_exceptions_holder')
|
||||
desk, created = Desk.objects.get_or_create(agenda=self.agenda, slug='_exceptions_holder')
|
||||
if created:
|
||||
desk.import_timeperiod_exceptions_from_settings()
|
||||
context['exceptions'] = TimePeriodException.objects.filter(
|
||||
Q(desk=desk) | Q(unavailability_calendar__desks=desk),
|
||||
end_datetime__gt=now(),
|
||||
|
|
|
@ -30,8 +30,11 @@ def test_agendas_api(app):
|
|||
reason = AbsenceReason.objects.create(group=group, label='Foo bar')
|
||||
reason2 = AbsenceReason.objects.create(group=group, label='Foo bar baz')
|
||||
event_agenda = Agenda.objects.create(label='Foo bar', category=category_a, absence_reasons_group=group)
|
||||
Agenda.objects.create(label='Foo bar 2', category=category_a)
|
||||
Agenda.objects.create(label='Foo bar 3', absence_reasons_group=group)
|
||||
Desk.objects.create(agenda=event_agenda, slug='_exceptions_holder')
|
||||
event_agenda2 = Agenda.objects.create(label='Foo bar 2', category=category_a)
|
||||
Desk.objects.create(agenda=event_agenda2, slug='_exceptions_holder')
|
||||
event_agenda3 = Agenda.objects.create(label='Foo bar 3', absence_reasons_group=group)
|
||||
Desk.objects.create(agenda=event_agenda3, slug='_exceptions_holder')
|
||||
meetings_agenda1 = Agenda.objects.create(label='Foo bar Meeting', kind='meetings', category=category_b)
|
||||
Agenda.objects.create(label='Foo bar Meeting 2', kind='meetings')
|
||||
resource1 = Resource.objects.create(label='Resource 1', description='Foo bar Resource 1')
|
||||
|
@ -231,6 +234,7 @@ def test_agendas_api(app):
|
|||
|
||||
for i in range(10):
|
||||
event_agenda = Agenda.objects.create(label='Foo bar', category=category_a)
|
||||
Desk.objects.create(agenda=event_agenda, slug='_exceptions_holder')
|
||||
event = Event.objects.create(
|
||||
start_datetime=now(), places=10, agenda=event_agenda, recurrence_days=[now().weekday()]
|
||||
)
|
||||
|
|
|
@ -7,7 +7,7 @@ import pytest
|
|||
from django.test import override_settings
|
||||
from django.utils.timezone import localtime, make_aware, now
|
||||
|
||||
from chrono.agendas.models import Agenda, Booking, Event, TimePeriodException
|
||||
from chrono.agendas.models import Agenda, Booking, Desk, Event, TimePeriodException
|
||||
|
||||
pytestmark = pytest.mark.django_db
|
||||
|
||||
|
@ -707,6 +707,7 @@ def test_recurring_events_api_exceptions(app, user, freezer):
|
|||
agenda = Agenda.objects.create(
|
||||
label='Foo bar', kind='events', minimal_booking_delay=1, maximal_booking_delay=30
|
||||
)
|
||||
Desk.objects.create(agenda=agenda, slug='_exceptions_holder')
|
||||
Event.objects.create(
|
||||
slug='abc',
|
||||
start_datetime=localtime(),
|
||||
|
|
|
@ -5,7 +5,7 @@ from __future__ import unicode_literals
|
|||
import pytest
|
||||
from django.contrib.auth.models import Group, User
|
||||
|
||||
from chrono.agendas.models import AbsenceReason, AbsenceReasonGroup, Agenda
|
||||
from chrono.agendas.models import AbsenceReason, AbsenceReasonGroup, Agenda, Desk
|
||||
|
||||
from .test_all import login
|
||||
|
||||
|
@ -209,6 +209,7 @@ def test_meetings_agenda_group(app, admin_user):
|
|||
|
||||
def test_agenda_group(app, admin_user):
|
||||
agenda = Agenda.objects.create(label=u'Foo bar', kind='events')
|
||||
Desk.objects.create(agenda=agenda, slug='_exceptions_holder')
|
||||
|
||||
app = login(app)
|
||||
resp = app.get('/manage/agendas/%s/settings' % agenda.pk)
|
||||
|
|
|
@ -457,6 +457,7 @@ def test_add_agenda_and_set_role(app, admin_user, manager_user):
|
|||
|
||||
def test_options_agenda(app, admin_user):
|
||||
agenda_events = Agenda.objects.create(label=u'Foo bar', kind='events')
|
||||
Desk.objects.create(agenda=agenda_events, slug='_exceptions_holder')
|
||||
agenda_meetings = Agenda.objects.create(label=u'Foo bar', kind='meetings')
|
||||
agenda_virtual = Agenda.objects.create(label=u'Foo bar', kind='virtual')
|
||||
|
||||
|
@ -581,7 +582,7 @@ def test_options_agenda_booking_check_options(app, admin_user):
|
|||
|
||||
def test_options_agenda_event_display_template(app, admin_user):
|
||||
agenda = Agenda.objects.create(label='Foo bar', kind='events')
|
||||
|
||||
Desk.objects.create(agenda=agenda, slug='_exceptions_holder')
|
||||
app = login(app)
|
||||
resp = app.get('/manage/agendas/%s/edit' % agenda.pk)
|
||||
valid_template = '{{ event.label|default:event.slug }} - {{ event.remaining_places|add:"5" }} / {{ event.start_datetime|date }} - {{ event.agenda.name }}'
|
||||
|
@ -607,6 +608,7 @@ def test_options_agenda_as_manager(app, manager_user):
|
|||
agenda = Agenda(label=u'Foo bar')
|
||||
agenda.view_role = manager_user.groups.all()[0]
|
||||
agenda.save()
|
||||
Desk.objects.create(agenda=agenda, slug='_exceptions_holder')
|
||||
app = login(app, username='manager', password='manager')
|
||||
resp = app.get('/manage/', status=200)
|
||||
resp = resp.click('Foo bar').follow().follow()
|
||||
|
@ -771,6 +773,7 @@ def test_agenda_options_desk_simple_management(available_mock, app, admin_user):
|
|||
def test_delete_agenda(app, admin_user):
|
||||
agenda = Agenda(label=u'Foo bar')
|
||||
agenda.save()
|
||||
Desk.objects.create(agenda=agenda, slug='_exceptions_holder')
|
||||
app = login(app)
|
||||
resp = app.get('/manage/', status=200)
|
||||
resp = app.get('/manage/agendas/%s/settings' % agenda.pk)
|
||||
|
@ -784,6 +787,7 @@ def test_delete_agenda(app, admin_user):
|
|||
def test_delete_busy_agenda(app, admin_user):
|
||||
agenda = Agenda(label=u'Foo bar')
|
||||
agenda.save()
|
||||
Desk.objects.create(agenda=agenda, slug='_exceptions_holder')
|
||||
event = Event(start_datetime=now() + datetime.timedelta(days=10), places=10, agenda=agenda)
|
||||
event.save()
|
||||
|
||||
|
@ -815,6 +819,7 @@ def test_delete_agenda_as_manager(app, manager_user):
|
|||
agenda = Agenda(label=u'Foo bar')
|
||||
agenda.edit_role = manager_user.groups.all()[0]
|
||||
agenda.save()
|
||||
Desk.objects.create(agenda=agenda, slug='_exceptions_holder')
|
||||
app = login(app, username='manager', password='manager')
|
||||
resp = app.get('/manage/agendas/%s/settings' % agenda.pk)
|
||||
assert 'Options' in resp.text
|
||||
|
@ -2746,6 +2751,7 @@ def test_agenda_events_day_view_midnight(app, admin_user):
|
|||
@freezegun.freeze_time('2020-10-01')
|
||||
def test_agenda_events_month_view(app, admin_user):
|
||||
agenda = Agenda.objects.create(label='Events', kind='events')
|
||||
Desk.objects.create(agenda=agenda, slug='_exceptions_holder')
|
||||
today = datetime.date.today()
|
||||
|
||||
login(app)
|
||||
|
@ -3426,6 +3432,7 @@ def test_import_agenda_as_manager(app, manager_user):
|
|||
def test_import_agenda(app, admin_user):
|
||||
agenda = Agenda(label=u'Foo bar')
|
||||
agenda.save()
|
||||
Desk.objects.create(agenda=agenda, slug='_exceptions_holder')
|
||||
|
||||
app = login(app)
|
||||
with freezegun.freeze_time('2020-06-15'):
|
||||
|
@ -4267,6 +4274,7 @@ def test_booking_cancellation_meetings_agenda(app, admin_user, manager_user, man
|
|||
|
||||
def test_agenda_notifications(app, admin_user, managers_group):
|
||||
agenda = Agenda.objects.create(label='Events', kind='events')
|
||||
Desk.objects.create(agenda=agenda, slug='_exceptions_holder')
|
||||
|
||||
login(app)
|
||||
resp = app.get('/manage/agendas/%s/settings' % agenda.id)
|
||||
|
@ -4315,6 +4323,7 @@ def test_agenda_notifications(app, admin_user, managers_group):
|
|||
|
||||
def test_agenda_notifications_no_old_events(app, admin_user, mailoutbox):
|
||||
agenda = Agenda.objects.create(label='Events', kind='events')
|
||||
Desk.objects.create(agenda=agenda, slug='_exceptions_holder')
|
||||
event = Event.objects.create(agenda=agenda, start_datetime=now(), places=10, label='Old event')
|
||||
event.cancelled = True
|
||||
event.save()
|
||||
|
@ -4339,6 +4348,7 @@ def test_agenda_notifications_no_old_events(app, admin_user, mailoutbox):
|
|||
|
||||
def test_manager_reminders(app, admin_user):
|
||||
agenda = Agenda.objects.create(label='Events', kind='events')
|
||||
Desk.objects.create(agenda=agenda, slug='_exceptions_holder')
|
||||
|
||||
login(app)
|
||||
resp = app.get('/manage/agendas/%s/settings' % agenda.id)
|
||||
|
@ -4377,6 +4387,7 @@ def test_manager_reminders(app, admin_user):
|
|||
|
||||
def test_manager_reminders_preview(app, admin_user):
|
||||
agenda = Agenda.objects.create(label='Events', kind='events')
|
||||
Desk.objects.create(agenda=agenda, slug='_exceptions_holder')
|
||||
AgendaReminderSettings.objects.create(
|
||||
agenda=agenda,
|
||||
days=1,
|
||||
|
@ -4428,6 +4439,7 @@ def test_export_site(app, admin_user):
|
|||
assert site_json == {'unavailability_calendars': [], 'agendas': []}
|
||||
|
||||
agenda = Agenda.objects.create(label=u'Foo Bar', kind='events')
|
||||
Desk.objects.create(agenda=agenda, slug='_exceptions_holder')
|
||||
unavailability_calendar = UnavailabilityCalendar.objects.create(label='Calendar 1')
|
||||
resp = app.get('/manage/agendas/export/')
|
||||
resp = resp.form.submit()
|
||||
|
@ -4447,6 +4459,7 @@ def test_export_site(app, admin_user):
|
|||
|
||||
def test_manager_agenda_roles(app, admin_user, manager_user):
|
||||
agenda = Agenda.objects.create(label='Events', kind='events')
|
||||
Desk.objects.create(agenda=agenda, slug='_exceptions_holder')
|
||||
|
||||
login(app)
|
||||
resp = app.get('/manage/agendas/%s/settings' % agenda.id)
|
||||
|
@ -4461,6 +4474,7 @@ def test_manager_agenda_roles(app, admin_user, manager_user):
|
|||
|
||||
def test_manager_agenda_booking_delays(app, admin_user):
|
||||
agenda = Agenda.objects.create(label='Events', kind='events')
|
||||
Desk.objects.create(agenda=agenda, slug='_exceptions_holder')
|
||||
|
||||
login(app)
|
||||
resp = app.get('/manage/agendas/%s/settings' % agenda.id)
|
||||
|
@ -4607,6 +4621,7 @@ def test_recurring_events_manage_exceptions(settings, app, admin_user, freezer):
|
|||
def test_recurring_events_exceptions_report(settings, app, admin_user, freezer):
|
||||
freezer.move_to('2021-07-01 12:10')
|
||||
agenda = Agenda.objects.create(label='Foo bar', kind='events')
|
||||
Desk.objects.create(agenda=agenda, slug='_exceptions_holder')
|
||||
event = Event.objects.create(
|
||||
start_datetime=now(),
|
||||
places=10,
|
||||
|
|
|
@ -15,7 +15,7 @@ from django.test.utils import CaptureQueriesContext
|
|||
from django.utils.timezone import localtime, make_aware, now
|
||||
from webtest import Upload
|
||||
|
||||
from chrono.agendas.models import AbsenceReason, AbsenceReasonGroup, Agenda, Booking, Event
|
||||
from chrono.agendas.models import AbsenceReason, AbsenceReasonGroup, Agenda, Booking, Desk, Event
|
||||
|
||||
from .test_all import login
|
||||
|
||||
|
@ -46,6 +46,7 @@ def test_add_event(app, admin_user):
|
|||
agenda = Agenda(label=u'Foo bar')
|
||||
agenda.maximal_booking_delay = 0
|
||||
agenda.save()
|
||||
Desk.objects.create(agenda=agenda, slug='_exceptions_holder')
|
||||
app = login(app)
|
||||
resp = app.get('/manage/agendas/%s/settings' % agenda.id, status=200)
|
||||
assert "This agenda doesn't have any event yet." in resp.text
|
||||
|
@ -96,6 +97,7 @@ def test_add_event_as_manager(app, manager_user):
|
|||
agenda = Agenda(label=u'Foo bar')
|
||||
agenda.view_role = manager_user.groups.all()[0]
|
||||
agenda.save()
|
||||
Desk.objects.create(agenda=agenda, slug='_exceptions_holder')
|
||||
app = login(app, username='manager', password='manager')
|
||||
resp = app.get('/manage/agendas/%s/' % agenda.id, status=302)
|
||||
app.get('/manage/agendas/%s/add-event' % agenda.id, status=403)
|
||||
|
@ -186,6 +188,7 @@ def test_edit_event_as_manager(app, manager_user):
|
|||
agenda = Agenda(label=u'Foo bar')
|
||||
agenda.view_role = manager_user.groups.all()[0]
|
||||
agenda.save()
|
||||
Desk.objects.create(agenda=agenda, slug='_exceptions_holder')
|
||||
event = Event.objects.create(
|
||||
start_datetime=make_aware(datetime.datetime(2016, 2, 15, 17, 0)),
|
||||
places=20,
|
||||
|
@ -219,6 +222,7 @@ def test_edit_recurring_event(settings, app, admin_user, freezer):
|
|||
agenda = Agenda.objects.create(
|
||||
label='Foo bar', kind='events', minimal_booking_delay=15, maximal_booking_delay=30
|
||||
)
|
||||
Desk.objects.create(agenda=agenda, slug='_exceptions_holder')
|
||||
event = Event.objects.create(start_datetime=now(), places=10, agenda=agenda)
|
||||
|
||||
app = login(app)
|
||||
|
@ -376,6 +380,7 @@ def test_booked_places(app, admin_user):
|
|||
def test_event_classes(app, admin_user):
|
||||
agenda = Agenda(label=u'Foo bar')
|
||||
agenda.save()
|
||||
Desk.objects.create(agenda=agenda, slug='_exceptions_holder')
|
||||
event = Event(start_datetime=make_aware(datetime.datetime(2016, 2, 15, 17, 0)), places=10, agenda=agenda)
|
||||
event.save()
|
||||
for i in range(2):
|
||||
|
@ -402,6 +407,7 @@ def test_event_classes(app, admin_user):
|
|||
def test_delete_event(app, admin_user):
|
||||
agenda = Agenda(label=u'Foo bar')
|
||||
agenda.save()
|
||||
Desk.objects.create(agenda=agenda, slug='_exceptions_holder')
|
||||
event = Event(start_datetime=make_aware(datetime.datetime(2016, 2, 15, 17, 0)), places=10, agenda=agenda)
|
||||
event.save()
|
||||
|
||||
|
@ -417,6 +423,7 @@ def test_delete_event(app, admin_user):
|
|||
def test_delete_busy_event(app, admin_user):
|
||||
agenda = Agenda(label=u'Foo bar')
|
||||
agenda.save()
|
||||
Desk.objects.create(agenda=agenda, slug='_exceptions_holder')
|
||||
event = Event(start_datetime=now() + datetime.timedelta(days=10), places=10, agenda=agenda)
|
||||
event.save()
|
||||
|
||||
|
@ -449,6 +456,7 @@ def test_delete_busy_event(app, admin_user):
|
|||
|
||||
def test_delete_recurring_event(app, admin_user, freezer):
|
||||
agenda = Agenda.objects.create(label='Foo bar', kind='events')
|
||||
Desk.objects.create(agenda=agenda, slug='_exceptions_holder')
|
||||
start_datetime = now() + datetime.timedelta(days=10)
|
||||
event = Event.objects.create(
|
||||
start_datetime=start_datetime, places=10, agenda=agenda, recurrence_days=[start_datetime.weekday()]
|
||||
|
@ -487,6 +495,7 @@ def test_delete_event_as_manager(app, manager_user):
|
|||
agenda = Agenda(label=u'Foo bar')
|
||||
agenda.edit_role = manager_user.groups.all()[0]
|
||||
agenda.save()
|
||||
Desk.objects.create(agenda=agenda, slug='_exceptions_holder')
|
||||
event = Event(start_datetime=make_aware(datetime.datetime(2016, 2, 15, 17, 0)), places=10, agenda=agenda)
|
||||
event.save()
|
||||
|
||||
|
@ -552,6 +561,7 @@ def test_export_events_wrong_kind(app, admin_user):
|
|||
def test_import_events(app, admin_user):
|
||||
agenda = Agenda(label=u'Foo bar')
|
||||
agenda.save()
|
||||
Desk.objects.create(agenda=agenda, slug='_exceptions_holder')
|
||||
|
||||
app = login(app)
|
||||
resp = app.get('/manage/agendas/%s/settings' % agenda.id, status=200)
|
||||
|
@ -774,6 +784,7 @@ def test_import_events(app, admin_user):
|
|||
|
||||
def test_import_events_existing_event(app, admin_user, freezer):
|
||||
agenda = Agenda.objects.create(label=u'Foo bar')
|
||||
Desk.objects.create(agenda=agenda, slug='_exceptions_holder')
|
||||
|
||||
app = login(app)
|
||||
resp = app.get('/manage/agendas/%s/import-events' % agenda.id, status=200)
|
||||
|
@ -1074,7 +1085,9 @@ def test_booking_cancellation_events_agenda(app, admin_user):
|
|||
|
||||
def test_event_check(app, admin_user):
|
||||
agenda = Agenda.objects.create(label='Events', kind='events')
|
||||
Desk.objects.create(agenda=agenda, slug='_exceptions_holder')
|
||||
agenda2 = Agenda.objects.create(label='Events', kind='events')
|
||||
Desk.objects.create(agenda=agenda2, slug='_exceptions_holder')
|
||||
event = Event.objects.create(
|
||||
label='xyz',
|
||||
start_datetime=now() + datetime.timedelta(days=1),
|
||||
|
@ -1188,6 +1201,7 @@ def test_event_check(app, admin_user):
|
|||
|
||||
def test_event_checked(app, admin_user):
|
||||
agenda = Agenda.objects.create(label='Events', kind='events', booking_check_filters='foo,bar')
|
||||
Desk.objects.create(agenda=agenda, slug='_exceptions_holder')
|
||||
event = Event.objects.create(
|
||||
label='xyz',
|
||||
start_datetime=now() - datetime.timedelta(days=1),
|
||||
|
|
|
@ -2050,7 +2050,8 @@ def test_recurring_events_sort(freezer):
|
|||
def test_recurring_events_exceptions(freezer):
|
||||
freezer.move_to('2021-05-01 12:00')
|
||||
agenda = Agenda.objects.create(label='Agenda', kind='events')
|
||||
desk = Desk.objects.get(slug='_exceptions_holder', agenda=agenda)
|
||||
desk = Desk.objects.create(agenda=agenda, slug='_exceptions_holder')
|
||||
desk.import_timeperiod_exceptions_from_settings()
|
||||
|
||||
event = Event.objects.create(
|
||||
agenda=agenda,
|
||||
|
@ -2123,7 +2124,7 @@ def test_recurring_events_exceptions(freezer):
|
|||
def test_recurring_events_exceptions_update_recurrences(freezer):
|
||||
freezer.move_to('2021-05-01 12:00')
|
||||
agenda = Agenda.objects.create(label='Agenda', kind='events')
|
||||
desk = Desk.objects.get(slug='_exceptions_holder', agenda=agenda)
|
||||
desk = Desk.objects.create(agenda=agenda, slug='_exceptions_holder')
|
||||
|
||||
daily_event = Event.objects.create(
|
||||
agenda=agenda,
|
||||
|
|
|
@ -58,7 +58,7 @@ def test_import_export(app):
|
|||
agenda_meetings = Agenda.objects.create(label='Meetings Agenda', kind='meetings')
|
||||
MeetingType.objects.create(agenda=agenda_meetings, label='Meeting Type', duration=30)
|
||||
desk = Desk.objects.create(agenda=agenda_meetings, label='Desk')
|
||||
exceptions_desk = Desk.objects.get(agenda=agenda_events, slug='_exceptions_holder')
|
||||
exceptions_desk = Desk.objects.create(agenda=agenda_events, slug='_exceptions_holder')
|
||||
|
||||
tpx_start = make_aware(datetime.datetime(2017, 5, 22, 8, 0))
|
||||
tpx_end = make_aware(datetime.datetime(2017, 5, 22, 12, 30))
|
||||
|
@ -151,6 +151,7 @@ def test_import_export_events_agenda_options(app):
|
|||
default_view='open_events',
|
||||
booking_form_url='{{ eservices_url }}backoffice/submission/inscription-aux-activites/',
|
||||
)
|
||||
Desk.objects.create(agenda=agenda, slug='_exceptions_holder')
|
||||
|
||||
output = get_output_of_command('export_site')
|
||||
assert len(json.loads(output)['agendas']) == 1
|
||||
|
@ -169,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')
|
||||
Desk.objects.create(agenda=agenda, slug='_exceptions_holder')
|
||||
Event.objects.create(
|
||||
slug='event',
|
||||
agenda=agenda,
|
||||
|
@ -181,6 +183,7 @@ def test_import_export_event_details(app):
|
|||
)
|
||||
# check event (agenda, slug) unicity
|
||||
agenda2 = Agenda.objects.create(label='Foo Bar 2', kind='events')
|
||||
Desk.objects.create(agenda=agenda2, slug='_exceptions_holder')
|
||||
Event.objects.create(
|
||||
slug='event',
|
||||
agenda=agenda2,
|
||||
|
@ -211,6 +214,7 @@ def test_import_export_event_details(app):
|
|||
def test_import_export_recurring_event(app, freezer):
|
||||
freezer.move_to('2021-01-12 12:10')
|
||||
agenda = Agenda.objects.create(label='Foo Bar', kind='events')
|
||||
desk = Desk.objects.create(agenda=agenda, slug='_exceptions_holder')
|
||||
event = Event.objects.create(
|
||||
agenda=agenda,
|
||||
start_datetime=now(),
|
||||
|
@ -364,6 +368,7 @@ def test_import_export_resources(app):
|
|||
def test_import_export_categorys(app):
|
||||
category = Category.objects.create(label='foo')
|
||||
agenda = Agenda.objects.create(label='Foo Bar', category=category)
|
||||
Desk.objects.create(agenda=agenda, slug='_exceptions_holder')
|
||||
output = get_output_of_command('export_site')
|
||||
|
||||
import_site(data={}, clean=True)
|
||||
|
@ -388,6 +393,7 @@ def test_import_export_categorys(app):
|
|||
def test_import_export_absence_reasons(app):
|
||||
group = AbsenceReasonGroup.objects.create(label='foo')
|
||||
agenda = Agenda.objects.create(label='Foo Bar', kind='events', absence_reasons_group=group)
|
||||
Desk.objects.create(agenda=agenda, slug='_exceptions_holder')
|
||||
output = get_output_of_command('export_site')
|
||||
|
||||
import_site(data={}, clean=True)
|
||||
|
@ -536,6 +542,7 @@ def test_import_export_desk_missing_fields(app):
|
|||
|
||||
def test_import_export_unknown_fields(app):
|
||||
events_agenda = Agenda.objects.create(label='Events Agenda', kind='events')
|
||||
Desk.objects.create(agenda=events_agenda, slug='_exceptions_holder')
|
||||
Event.objects.create(agenda=events_agenda, start_datetime=now(), places=10)
|
||||
meetings_agenda = Agenda.objects.create(label='Meetings Agenda', kind='meetings')
|
||||
MeetingType.objects.create(agenda=meetings_agenda, label='Meeting Type', duration=30)
|
||||
|
@ -580,6 +587,7 @@ def test_import_export_unknown_fields(app):
|
|||
|
||||
def test_import_export_slug_fields(app):
|
||||
agenda_events = Agenda.objects.create(label='Events Agenda', kind='events')
|
||||
Desk.objects.create(agenda=agenda_events, slug='_exceptions_holder')
|
||||
Event.objects.create(agenda=agenda_events, start_datetime=now(), places=10)
|
||||
agenda_meetings = Agenda.objects.create(label='Meetings Agenda', kind='meetings')
|
||||
MeetingType.objects.create(agenda=agenda_meetings, label='Meeting Type', duration=30)
|
||||
|
@ -621,6 +629,7 @@ def test_import_export_slug_fields(app):
|
|||
|
||||
def test_import_export_notification_settings():
|
||||
agenda = Agenda.objects.create(label='Foo bar', kind='events')
|
||||
Desk.objects.create(agenda=agenda, slug='_exceptions_holder')
|
||||
AgendaNotificationsSettings.objects.create(
|
||||
agenda=agenda,
|
||||
almost_full_event=AgendaNotificationsSettings.EDIT_ROLE,
|
||||
|
@ -650,6 +659,7 @@ def test_import_export_notification_settings():
|
|||
|
||||
def test_import_export_reminder_settings():
|
||||
agenda = Agenda.objects.create(label='Foo bar', kind='events')
|
||||
Desk.objects.create(agenda=agenda, slug='_exceptions_holder')
|
||||
AgendaReminderSettings.objects.create(
|
||||
agenda=agenda,
|
||||
days=2,
|
||||
|
@ -711,6 +721,36 @@ def test_import_export_time_period_exception_source():
|
|||
assert not desk.timeperiodexception_set.exists()
|
||||
|
||||
|
||||
@override_settings(
|
||||
EXCEPTIONS_SOURCES={
|
||||
'holidays': {'class': 'workalendar.europe.France', 'label': 'Holidays'},
|
||||
}
|
||||
)
|
||||
def test_import_export_time_period_exception_source_enabled():
|
||||
agenda = Agenda.objects.create(label='Foo bar', kind='events')
|
||||
desk = Desk.objects.create(agenda=agenda, slug='_exceptions_holder')
|
||||
desk.import_timeperiod_exceptions_from_settings()
|
||||
source = desk.timeperiodexceptionsource_set.first()
|
||||
assert not source.enabled
|
||||
assert source.settings_slug == 'holidays'
|
||||
source.enabled = True
|
||||
source.save()
|
||||
|
||||
output = get_output_of_command('export_site')
|
||||
payload = json.loads(output)
|
||||
agenda.delete()
|
||||
assert not TimePeriodExceptionSource.objects.exists()
|
||||
|
||||
import_site(payload)
|
||||
agenda = Agenda.objects.get(label='Foo bar')
|
||||
assert agenda.desk_set.count() == 1
|
||||
desk = agenda.desk_set.first()
|
||||
assert desk.timeperiodexceptionsource_set.count() == 1
|
||||
source = desk.timeperiodexceptionsource_set.first()
|
||||
assert source.enabled
|
||||
assert source.settings_slug == 'holidays'
|
||||
|
||||
|
||||
def test_import_export_do_not_duplicate_timeperiod_and_exceptions():
|
||||
agenda = Agenda.objects.create(label='Foo bar', kind='meetings')
|
||||
desk = Desk.objects.create(slug='test', agenda=agenda)
|
||||
|
|
Loading…
Reference in New Issue