From 7aae2543680935b12e21180fdeab3cc32a262241 Mon Sep 17 00:00:00 2001 From: Valentin Deniaud Date: Thu, 20 Feb 2020 17:35:50 +0100 Subject: [PATCH 2/4] 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 | 44 +++++++++---------- 3 files changed, 25 insertions(+), 25 deletions(-) diff --git a/chrono/manager/static/css/style.scss b/chrono/manager/static/css/style.scss index 6a59ad5..508716a 100644 --- a/chrono/manager/static/css/style.scss +++ b/chrono/manager/static/css/style.scss @@ -84,8 +84,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 662d274..1bdae26 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 @@ {% endfor %}
  • {% trans 'Add a time period' %}
  • {% 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 9b171ce..b705b57 100644 --- a/tests/test_manager.py +++ b/tests/test_manager.py @@ -2101,13 +2101,13 @@ def test_agenda_import_time_period_exception_from_ics(app, admin_user): MeetingType.objects.create(agenda=agenda, label='Foo') login(app) resp = app.get('/manage/agendas/%d/settings' % agenda.pk) - 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/settings' % agenda.pk) - 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 @@ -2140,7 +2140,7 @@ SUMMARY:New Year's Eve END:VEVENT END:VCALENDAR""" resp = app.get('/manage/agendas/%d/settings' % agenda.pk) - 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 @@ -2165,7 +2165,7 @@ def test_agenda_import_time_period_exception_from_ics_recurrent(app, admin_user) ) login(app) resp = app.get('/manage/agendas/%s/settings' % agenda.pk) - resp = resp.click('upload') + resp = resp.click('manage exceptions') ics_with_recurrent_exceptions = b"""BEGIN:VCALENDAR VERSION:2.0 PRODID:-//foo.bar//EN @@ -2188,7 +2188,7 @@ def test_agenda_import_time_period_exception_with_remote_ics(mocked_get, app, ad MeetingType.objects.create(agenda=agenda, label='Bar') login(app) resp = app.get('/manage/agendas/%d/settings' % agenda.pk) - resp = resp.click('upload') + resp = resp.click('manage exceptions') assert 'ics_file' in resp.form.fields assert 'ics_url' in resp.form.fields @@ -2223,7 +2223,7 @@ def test_agenda_import_time_period_exception_with_remote_ics_no_events(mocked_ge MeetingType.objects.create(agenda=agenda, label='Bar') login(app) resp = app.get('/manage/agendas/%d/settings' % agenda.pk) - 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 @@ -2249,7 +2249,7 @@ def test_agenda_import_time_period_exception_from_remote_ics_with_connection_err MeetingType.objects.create(agenda=agenda, label='Bar') login(app) resp = app.get('/manage/agendas/%d/settings' % agenda.pk) - resp = resp.click('upload') + resp = resp.click('manage exceptions') assert 'ics_file' in resp.form.fields assert 'ics_url' in resp.form.fields @@ -2272,7 +2272,7 @@ def test_agenda_import_time_period_exception_from_forbidden_remote_ics(mocked_ge MeetingType.objects.create(agenda=agenda, label='Bar') login(app) resp = app.get('/manage/agendas/%d/settings' % agenda.pk) - 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 @@ -2293,7 +2293,7 @@ def test_agenda_import_time_period_exception_from_remote_ics_with_ssl_error(mock MeetingType.objects.create(agenda=agenda, label='Bar') login(app) resp = app.get('/manage/agendas/%d/settings' % agenda.pk) - 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 @@ -2317,7 +2317,7 @@ def test_meetings_agenda_delete_time_period_exception_source(app, admin_user, fr login(app) # import a source resp = app.get('/manage/agendas/%s/settings' % agenda.pk) - resp = resp.click('upload') + resp = resp.click('manage exceptions') ics_with_recurrent_exceptions = b"""BEGIN:VCALENDAR VERSION:2.0 PRODID:-//foo.bar//EN @@ -2336,7 +2336,7 @@ END:VCALENDAR""" # import another one resp = app.get('/manage/agendas/%s/settings' % agenda.pk) - 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 @@ -2345,7 +2345,7 @@ END:VCALENDAR""" # delete the second one resp = app.get('/manage/agendas/%s/settings' % agenda.pk) - 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 @@ -2354,7 +2354,7 @@ END:VCALENDAR""" # delete the first one resp = app.get('/manage/agendas/%s/settings' % agenda.pk) - 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 @@ -2383,7 +2383,7 @@ END:VCALENDAR""" login(app) # import a source from a file resp = app.get('/manage/agendas/%s/settings' % agenda.pk) - 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 @@ -2394,7 +2394,7 @@ END:VCALENDAR""" # replace the source resp = app.get('/manage/agendas/%s/settings' % agenda.pk) - 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() @@ -2429,7 +2429,7 @@ END:VCALENDAR""" login(app) # import a source from an url resp = app.get('/manage/agendas/%s/settings' % agenda.pk) - 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 @@ -2442,7 +2442,7 @@ END:VCALENDAR""" # refresh the source resp = app.get('/manage/agendas/%s/settings' % agenda.pk) - 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 @@ -2468,7 +2468,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 @@ -2476,14 +2476,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 @@ -2499,7 +2499,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