From 702b99ab908151829dae26114a50076ef9a7647f Mon Sep 17 00:00:00 2001 From: Valentin Deniaud Date: Thu, 20 Feb 2020 17:35:50 +0100 Subject: [PATCH 2/2] manager: change semantics of exceptions sources management (#18904) --- chrono/manager/static/css/style.scss | 4 +- .../manager_meetings_agenda_settings.html | 2 +- tests/test_manager.py | 56 +++++++++---------- 3 files changed, 31 insertions(+), 31 deletions(-) diff --git a/chrono/manager/static/css/style.scss b/chrono/manager/static/css/style.scss index 0becfba..7efd3e4 100644 --- a/chrono/manager/static/css/style.scss +++ b/chrono/manager/static/css/style.scss @@ -70,8 +70,8 @@ a.timeperiod-exception-all { font-style: italic; } -.link-action-icon.upload::before { - content: "\f093"; /* upload-sign */ +.link-action-icon.settings::before { + content: "\f0ad"; /* wrench */ } .dayview h2 a, diff --git a/chrono/manager/templates/chrono/manager_meetings_agenda_settings.html b/chrono/manager/templates/chrono/manager_meetings_agenda_settings.html index 84cbf81..9e965f4 100644 --- a/chrono/manager/templates/chrono/manager_meetings_agenda_settings.html +++ b/chrono/manager/templates/chrono/manager_meetings_agenda_settings.html @@ -71,7 +71,7 @@
  • {% trans 'Add a time period' %}
  • {% if desk.timeperiod_set.count %} {% url 'chrono-manager-agenda-add-time-period-exception' agenda_pk=object.pk pk=desk.pk as add_time_period_exception_url %} -
  • {% trans 'Exceptions' %}{% trans 'upload' %}
  • +
  • {% trans 'Exceptions' %}{% trans 'manage exceptions' %}
  • {% for exception in desk.get_exceptions_within_two_weeks %}
  • {{ exception }} diff --git a/tests/test_manager.py b/tests/test_manager.py index 39ef02d..22a5aa1 100644 --- a/tests/test_manager.py +++ b/tests/test_manager.py @@ -1251,7 +1251,7 @@ def test_agenda_import_time_period_exception_from_ics(app, admin_user): login(app) resp = app.get('/manage/agendas/%d/' % agenda.pk).follow() resp = resp.click('Settings') - assert 'Import exceptions from .ics' not in resp.text + assert 'Manage exception sources' not in resp.text TimePeriod.objects.create( weekday=1, desk=desk, start_time=datetime.time(10, 0), end_time=datetime.time(12, 0) @@ -1259,14 +1259,14 @@ def test_agenda_import_time_period_exception_from_ics(app, admin_user): resp = app.get('/manage/agendas/%d/' % agenda.pk).follow() resp = resp.click('Settings') - assert 'Import exceptions from .ics' in resp.text - resp = resp.click('upload') + assert 'Manage exception sources' in resp.text + resp = resp.click('manage exceptions') assert "To add new exceptions, you can upload a file or specify an address to a remote calendar." in resp resp = resp.form.submit(status=200) assert 'Please provide an ICS File or an URL.' in resp.text resp = app.get('/manage/agendas/%d/' % agenda.pk).follow() resp = resp.click('Settings') - resp = resp.click('upload') + resp = resp.click('manage exceptions') resp.form['ics_file'] = Upload('exceptions.ics', b'invalid content', 'text/calendar') resp = resp.form.submit(status=200) assert 'File format is invalid' in resp.text @@ -1300,7 +1300,7 @@ END:VEVENT END:VCALENDAR""" resp = app.get('/manage/agendas/%d/' % agenda.pk).follow() resp = resp.click('Settings') - resp = resp.click('upload') + resp = resp.click('manage exceptions') resp.form['ics_file'] = Upload('exceptions.ics', ics_with_exceptions, 'text/calendar') resp = resp.form.submit(status=302) assert TimePeriodException.objects.filter(desk=desk).count() == 1 @@ -1326,7 +1326,7 @@ def test_agenda_import_time_period_exception_from_ics_recurrent(app, admin_user) login(app) resp = app.get('/manage/agendas/%d/' % agenda.pk).follow() resp = resp.click('Settings') - resp = resp.click('upload') + resp = resp.click('manage exceptions') ics_with_recurrent_exceptions = b"""BEGIN:VCALENDAR VERSION:2.0 PRODID:-//foo.bar//EN @@ -1350,7 +1350,7 @@ def test_agenda_import_time_period_exception_with_remote_ics(mocked_get, app, ad login(app) resp = app.get('/manage/agendas/%d/' % agenda.pk).follow() resp = resp.click('Settings') - assert 'Import exceptions from .ics' not in resp.text + assert 'Manage exception sources' not in resp.text TimePeriod.objects.create( weekday=1, desk=desk, start_time=datetime.time(10, 0), end_time=datetime.time(12, 0) @@ -1358,7 +1358,7 @@ def test_agenda_import_time_period_exception_with_remote_ics(mocked_get, app, ad resp = app.get('/manage/agendas/%d/' % agenda.pk).follow() resp = resp.click('Settings') - resp = resp.click('upload') + resp = resp.click('manage exceptions') assert 'ics_file' in resp.form.fields assert 'ics_url' in resp.form.fields @@ -1394,7 +1394,7 @@ def test_agenda_import_time_period_exception_with_remote_ics_no_events(mocked_ge login(app) resp = app.get('/manage/agendas/%d/' % agenda.pk).follow() resp = resp.click('Settings') - assert 'Import exceptions from .ics' not in resp.text + assert 'Manage exception sources' not in resp.text TimePeriod.objects.create( weekday=1, desk=desk, start_time=datetime.time(10, 0), end_time=datetime.time(12, 0) @@ -1402,7 +1402,7 @@ def test_agenda_import_time_period_exception_with_remote_ics_no_events(mocked_ge resp = app.get('/manage/agendas/%d/' % agenda.pk).follow() resp = resp.click('Settings') - resp = resp.click('upload') + resp = resp.click('manage exceptions') resp.form['ics_url'] = 'http://example.com/foo.ics' mocked_response = mock.Mock() mocked_response.text = """BEGIN:VCALENDAR @@ -1429,7 +1429,7 @@ def test_agenda_import_time_period_exception_from_remote_ics_with_connection_err login(app) resp = app.get('/manage/agendas/%d/' % agenda.pk).follow() resp = resp.click('Settings') - assert 'Import exceptions from .ics' not in resp.text + assert 'Manage exception sources' not in resp.text TimePeriod.objects.create( weekday=1, desk=desk, start_time=datetime.time(10, 0), end_time=datetime.time(12, 0) @@ -1437,7 +1437,7 @@ def test_agenda_import_time_period_exception_from_remote_ics_with_connection_err resp = app.get('/manage/agendas/%d/' % agenda.pk).follow() resp = resp.click('Settings') - resp = resp.click('upload') + resp = resp.click('manage exceptions') assert 'ics_file' in resp.form.fields assert 'ics_url' in resp.form.fields @@ -1461,7 +1461,7 @@ def test_agenda_import_time_period_exception_from_forbidden_remote_ics(mocked_ge login(app) resp = app.get('/manage/agendas/%d/' % agenda.pk).follow() resp = resp.click('Settings') - assert 'Import exceptions from .ics' not in resp.text + assert 'Manage exception sources' not in resp.text TimePeriod.objects.create( weekday=1, desk=desk, start_time=datetime.time(10, 0), end_time=datetime.time(12, 0) @@ -1469,7 +1469,7 @@ def test_agenda_import_time_period_exception_from_forbidden_remote_ics(mocked_ge resp = app.get('/manage/agendas/%d/' % agenda.pk).follow() resp = resp.click('Settings') - resp = resp.click('upload') + resp = resp.click('manage exceptions') resp.form['ics_url'] = 'http://example.com/foo.ics' mocked_response = mock.Mock() mocked_response.status_code = 403 @@ -1491,14 +1491,14 @@ def test_agenda_import_time_period_exception_from_remote_ics_with_ssl_error(mock login(app) resp = app.get('/manage/agendas/%d/' % agenda.pk).follow() resp = resp.click('Settings') - assert 'Import exceptions from .ics' not in resp.text + assert 'Manage exception sources' not in resp.text TimePeriod.objects.create( weekday=1, desk=desk, start_time=datetime.time(10, 0), end_time=datetime.time(12, 0) ) resp = app.get('/manage/agendas/%d/' % agenda.pk).follow() resp = resp.click('Settings') - resp = resp.click('upload') + resp = resp.click('manage exceptions') resp.form['ics_url'] = 'https://example.com/foo.ics' mocked_response = mock.Mock() mocked_get.return_value = mocked_response @@ -1523,7 +1523,7 @@ def test_meetings_agenda_delete_time_period_exception_source(app, admin_user, fr # import a source resp = app.get('/manage/agendas/%d/' % agenda.pk).follow() resp = resp.click('Settings') - resp = resp.click('upload') + resp = resp.click('manage exceptions') ics_with_recurrent_exceptions = b"""BEGIN:VCALENDAR VERSION:2.0 PRODID:-//foo.bar//EN @@ -1543,7 +1543,7 @@ END:VCALENDAR""" # import another one resp = app.get('/manage/agendas/%d/' % agenda.pk).follow() resp = resp.click('Settings') - resp = resp.click('upload') + resp = resp.click('manage exceptions') resp.form['ics_file'] = Upload('exceptions.ics', ics_with_recurrent_exceptions, 'text/calendar') resp = resp.form.submit(status=302).follow() assert TimePeriodException.objects.filter(desk=desk).count() == 4 @@ -1553,7 +1553,7 @@ END:VCALENDAR""" # delete the second one resp = app.get('/manage/agendas/%d/' % agenda.pk).follow() resp = resp.click('Settings') - resp = resp.click('upload') + resp = resp.click('manage exceptions') resp = resp.click(href='/manage/time-period-exceptions-source/%d/delete' % source2.pk) resp = resp.form.submit().follow() assert TimePeriodException.objects.count() == 2 @@ -1563,7 +1563,7 @@ END:VCALENDAR""" # delete the first one resp = app.get('/manage/agendas/%d/' % agenda.pk).follow() resp = resp.click('Settings') - resp = resp.click('upload') + resp = resp.click('manage exceptions') resp = resp.click(href='/manage/time-period-exceptions-source/%d/delete' % source1.pk) resp = resp.form.submit().follow() assert TimePeriodException.objects.count() == 0 @@ -1593,7 +1593,7 @@ END:VCALENDAR""" # import a source from a file resp = app.get('/manage/agendas/%d/' % agenda.pk).follow() resp = resp.click('Settings') - resp = resp.click('upload') + resp = resp.click('manage exceptions') resp.form['ics_file'] = Upload('exceptions.ics', ics_file_content, 'text/calendar') resp = resp.form.submit(status=302).follow() assert TimePeriodException.objects.filter(desk=desk).count() == 2 @@ -1605,7 +1605,7 @@ END:VCALENDAR""" # replace the source resp = app.get('/manage/agendas/%d/' % agenda.pk).follow() resp = resp.click('Settings') - resp = resp.click('upload') + resp = resp.click('manage exceptions') resp = resp.click(href='/manage/time-period-exceptions-source/%d/replace' % source.pk) resp.form['ics_newfile'] = Upload('exceptions.ics', ics_file_content, 'text/calendar') resp = resp.form.submit().follow() @@ -1641,7 +1641,7 @@ END:VCALENDAR""" # import a source from an url resp = app.get('/manage/agendas/%d/' % agenda.pk).follow() resp = resp.click('Settings') - resp = resp.click('upload') + resp = resp.click('manage exceptions') resp.form['ics_url'] = 'http://example.com/foo.ics' mocked_response = mock.Mock() mocked_response.text = ics_url_content @@ -1655,7 +1655,7 @@ END:VCALENDAR""" # refresh the source resp = app.get('/manage/agendas/%d/' % agenda.pk).follow() resp = resp.click('Settings') - resp = resp.click('upload') + resp = resp.click('manage exceptions') mocked_response = mock.Mock() mocked_response.text = ics_url_content mocked_get.return_value = mocked_response @@ -1681,7 +1681,7 @@ def test_meetings_agenda_time_period_exception_source_from_settings(app, admin_u login(app) resp = app.get('/manage/agendas/%d/' % agenda.pk).follow() resp = resp.click('Settings') - resp = resp.click('upload') + resp = resp.click('manage exceptions') assert 'Holidays' in resp.text assert 'disabled' not in resp.text assert 'refresh' not in resp.text @@ -1689,14 +1689,14 @@ def test_meetings_agenda_time_period_exception_source_from_settings(app, admin_u resp = resp.click('disable').follow() assert not TimePeriodException.objects.exists() - resp = resp.click('upload') + resp = resp.click('manage exceptions') assert 'Holidays' in resp.text assert 'disabled' in resp.text resp = resp.click('enable').follow() assert TimePeriodException.objects.exists() - resp = resp.click('upload') + resp = resp.click('manage exceptions') assert 'disabled' not in resp.text @@ -1712,7 +1712,7 @@ def test_meetings_agenda_time_period_exception_source_try_disable_ics(app, admin login(app) resp = app.get('/manage/agendas/%d/' % agenda.pk).follow() resp = resp.click('Settings') - resp = resp.click('upload') + resp = resp.click('manage exceptions') assert 'test.ics' in resp.text assert app.get('/manage/time-period-exceptions-source/%s/toggle' % source.pk, status=404) -- 2.20.1