agenda: fix sync_desks_timeperiod_exceptions command (#40497)

This commit is contained in:
Lauréline Guérin 2020-03-06 14:12:14 +01:00
parent 58727dce45
commit 7062e587fb
No known key found for this signature in database
GPG Key ID: 1FAB9B9B4F93D473
2 changed files with 14 additions and 3 deletions

View File

@ -19,6 +19,7 @@ from __future__ import print_function
import sys
from django.core.management.base import BaseCommand
from django.db.models import Q
from chrono.agendas.models import ICSError, TimePeriodExceptionSource
@ -35,7 +36,7 @@ class Command(BaseCommand):
u'unable to create timeperiod exceptions for "%s": %s' % (source.desk, e), file=sys.stderr
)
for source in TimePeriodExceptionSource.objects.filter(ics_url__isnull=True).exclude(ics_file=''):
for source in TimePeriodExceptionSource.objects.filter(ics_url__isnull=True).exclude(Q(ics_file='') | Q(ics_file__isnull=True)):
try:
source.desk.import_timeperiod_exceptions_from_ics_file(source.ics_file, source=source)
except ICSError as e:

View File

@ -413,8 +413,18 @@ def test_sync_desks_timeperiod_exceptions_from_ics(mocked_get, capsys):
assert import_remote_ics.call_args_list == []
assert import_file_ics.call_args_list == [mock.call(mock.ANY, source=source)]
source.ics_file.delete()
source.save()
TimePeriodExceptionSource.objects.update(ics_file='')
with mock.patch(
'chrono.agendas.models.Desk.import_timeperiod_exceptions_from_remote_ics'
) as import_remote_ics:
with mock.patch(
'chrono.agendas.models.Desk.import_timeperiod_exceptions_from_ics_file'
) as import_file_ics:
call_command('sync_desks_timeperiod_exceptions')
assert import_remote_ics.call_args_list == []
assert import_file_ics.call_args_list == []
TimePeriodExceptionSource.objects.update(ics_file=None)
with mock.patch(
'chrono.agendas.models.Desk.import_timeperiod_exceptions_from_remote_ics'
) as import_remote_ics: