From 5ec89d98445350048fb6823c378a963418cdcb1e 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 | 54 +++++++++---------- 3 files changed, 30 insertions(+), 30 deletions(-) diff --git a/chrono/manager/static/css/style.scss b/chrono/manager/static/css/style.scss index e4807bb..a30fd20 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 89f8099..a315423 100644 --- a/tests/test_manager.py +++ b/tests/test_manager.py @@ -1210,7 +1210,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) @@ -1218,14 +1218,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 @@ -1259,7 +1259,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 @@ -1285,7 +1285,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 @@ -1309,7 +1309,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) @@ -1317,7 +1317,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 @@ -1353,7 +1353,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) @@ -1361,7 +1361,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 @@ -1388,7 +1388,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) @@ -1396,7 +1396,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 @@ -1420,7 +1420,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) @@ -1428,7 +1428,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 @@ -1450,14 +1450,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 @@ -1482,7 +1482,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 @@ -1502,7 +1502,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 @@ -1512,7 +1512,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 @@ -1522,7 +1522,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 @@ -1552,7 +1552,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 @@ -1564,7 +1564,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() @@ -1600,7 +1600,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 @@ -1614,7 +1614,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 @@ -1640,7 +1640,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') # TODO this view name is now incorrect, change it + resp = resp.click('manage exceptions') assert 'Holidays' in resp.text assert 'disabled' not in resp.text assert 'refresh' not in resp.text @@ -1649,7 +1649,7 @@ def test_meetings_agenda_time_period_exception_source_from_settings(app, admin_u resp = resp.form.submit().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 assert 'remove' not in resp.text @@ -1657,7 +1657,7 @@ def test_meetings_agenda_time_period_exception_source_from_settings(app, admin_u resp = resp.click('enable').follow() assert TimePeriodException.objects.exists() - resp = resp.click('upload') + resp = resp.click('manage exceptions') assert 'disabled' not in resp.text def test_agenda_day_view(app, admin_user, manager_user, api_user): -- 2.20.1