2101 |
2101 |
MeetingType.objects.create(agenda=agenda, label='Foo')
|
2102 |
2102 |
login(app)
|
2103 |
2103 |
resp = app.get('/manage/agendas/%d/settings' % agenda.pk)
|
2104 |
|
assert 'Import exceptions from .ics' in resp.text
|
2105 |
|
resp = resp.click('upload')
|
|
2104 |
assert 'Manage exception sources' in resp.text
|
|
2105 |
resp = resp.click('manage exceptions')
|
2106 |
2106 |
assert "To add new exceptions, you can upload a file or specify an address to a remote calendar." in resp
|
2107 |
2107 |
resp = resp.form.submit(status=200)
|
2108 |
2108 |
assert 'Please provide an ICS File or an URL.' in resp.text
|
2109 |
2109 |
resp = app.get('/manage/agendas/%d/settings' % agenda.pk)
|
2110 |
|
resp = resp.click('upload')
|
|
2110 |
resp = resp.click('manage exceptions')
|
2111 |
2111 |
resp.form['ics_file'] = Upload('exceptions.ics', b'invalid content', 'text/calendar')
|
2112 |
2112 |
resp = resp.form.submit(status=200)
|
2113 |
2113 |
assert 'File format is invalid' in resp.text
|
... | ... | |
2140 |
2140 |
END:VEVENT
|
2141 |
2141 |
END:VCALENDAR"""
|
2142 |
2142 |
resp = app.get('/manage/agendas/%d/settings' % agenda.pk)
|
2143 |
|
resp = resp.click('upload')
|
|
2143 |
resp = resp.click('manage exceptions')
|
2144 |
2144 |
resp.form['ics_file'] = Upload('exceptions.ics', ics_with_exceptions, 'text/calendar')
|
2145 |
2145 |
resp = resp.form.submit(status=302)
|
2146 |
2146 |
assert TimePeriodException.objects.filter(desk=desk).count() == 1
|
... | ... | |
2165 |
2165 |
)
|
2166 |
2166 |
login(app)
|
2167 |
2167 |
resp = app.get('/manage/agendas/%s/settings' % agenda.pk)
|
2168 |
|
resp = resp.click('upload')
|
|
2168 |
resp = resp.click('manage exceptions')
|
2169 |
2169 |
ics_with_recurrent_exceptions = b"""BEGIN:VCALENDAR
|
2170 |
2170 |
VERSION:2.0
|
2171 |
2171 |
PRODID:-//foo.bar//EN
|
... | ... | |
2188 |
2188 |
MeetingType.objects.create(agenda=agenda, label='Bar')
|
2189 |
2189 |
login(app)
|
2190 |
2190 |
resp = app.get('/manage/agendas/%d/settings' % agenda.pk)
|
2191 |
|
resp = resp.click('upload')
|
|
2191 |
resp = resp.click('manage exceptions')
|
2192 |
2192 |
|
2193 |
2193 |
assert 'ics_file' in resp.form.fields
|
2194 |
2194 |
assert 'ics_url' in resp.form.fields
|
... | ... | |
2223 |
2223 |
MeetingType.objects.create(agenda=agenda, label='Bar')
|
2224 |
2224 |
login(app)
|
2225 |
2225 |
resp = app.get('/manage/agendas/%d/settings' % agenda.pk)
|
2226 |
|
resp = resp.click('upload')
|
|
2226 |
resp = resp.click('manage exceptions')
|
2227 |
2227 |
resp.form['ics_url'] = 'http://example.com/foo.ics'
|
2228 |
2228 |
mocked_response = mock.Mock()
|
2229 |
2229 |
mocked_response.text = """BEGIN:VCALENDAR
|
... | ... | |
2249 |
2249 |
MeetingType.objects.create(agenda=agenda, label='Bar')
|
2250 |
2250 |
login(app)
|
2251 |
2251 |
resp = app.get('/manage/agendas/%d/settings' % agenda.pk)
|
2252 |
|
resp = resp.click('upload')
|
|
2252 |
resp = resp.click('manage exceptions')
|
2253 |
2253 |
|
2254 |
2254 |
assert 'ics_file' in resp.form.fields
|
2255 |
2255 |
assert 'ics_url' in resp.form.fields
|
... | ... | |
2272 |
2272 |
MeetingType.objects.create(agenda=agenda, label='Bar')
|
2273 |
2273 |
login(app)
|
2274 |
2274 |
resp = app.get('/manage/agendas/%d/settings' % agenda.pk)
|
2275 |
|
resp = resp.click('upload')
|
|
2275 |
resp = resp.click('manage exceptions')
|
2276 |
2276 |
resp.form['ics_url'] = 'http://example.com/foo.ics'
|
2277 |
2277 |
mocked_response = mock.Mock()
|
2278 |
2278 |
mocked_response.status_code = 403
|
... | ... | |
2293 |
2293 |
MeetingType.objects.create(agenda=agenda, label='Bar')
|
2294 |
2294 |
login(app)
|
2295 |
2295 |
resp = app.get('/manage/agendas/%d/settings' % agenda.pk)
|
2296 |
|
resp = resp.click('upload')
|
|
2296 |
resp = resp.click('manage exceptions')
|
2297 |
2297 |
resp.form['ics_url'] = 'https://example.com/foo.ics'
|
2298 |
2298 |
mocked_response = mock.Mock()
|
2299 |
2299 |
mocked_get.return_value = mocked_response
|
... | ... | |
2317 |
2317 |
login(app)
|
2318 |
2318 |
# import a source
|
2319 |
2319 |
resp = app.get('/manage/agendas/%s/settings' % agenda.pk)
|
2320 |
|
resp = resp.click('upload')
|
|
2320 |
resp = resp.click('manage exceptions')
|
2321 |
2321 |
ics_with_recurrent_exceptions = b"""BEGIN:VCALENDAR
|
2322 |
2322 |
VERSION:2.0
|
2323 |
2323 |
PRODID:-//foo.bar//EN
|
... | ... | |
2336 |
2336 |
|
2337 |
2337 |
# import another one
|
2338 |
2338 |
resp = app.get('/manage/agendas/%s/settings' % agenda.pk)
|
2339 |
|
resp = resp.click('upload')
|
|
2339 |
resp = resp.click('manage exceptions')
|
2340 |
2340 |
resp.form['ics_file'] = Upload('exceptions.ics', ics_with_recurrent_exceptions, 'text/calendar')
|
2341 |
2341 |
resp = resp.form.submit(status=302).follow()
|
2342 |
2342 |
assert TimePeriodException.objects.filter(desk=desk).count() == 4
|
... | ... | |
2345 |
2345 |
|
2346 |
2346 |
# delete the second one
|
2347 |
2347 |
resp = app.get('/manage/agendas/%s/settings' % agenda.pk)
|
2348 |
|
resp = resp.click('upload')
|
|
2348 |
resp = resp.click('manage exceptions')
|
2349 |
2349 |
resp = resp.click(href='/manage/time-period-exceptions-source/%d/delete' % source2.pk)
|
2350 |
2350 |
resp = resp.form.submit().follow()
|
2351 |
2351 |
assert TimePeriodException.objects.count() == 2
|
... | ... | |
2354 |
2354 |
|
2355 |
2355 |
# delete the first one
|
2356 |
2356 |
resp = app.get('/manage/agendas/%s/settings' % agenda.pk)
|
2357 |
|
resp = resp.click('upload')
|
|
2357 |
resp = resp.click('manage exceptions')
|
2358 |
2358 |
resp = resp.click(href='/manage/time-period-exceptions-source/%d/delete' % source1.pk)
|
2359 |
2359 |
resp = resp.form.submit().follow()
|
2360 |
2360 |
assert TimePeriodException.objects.count() == 0
|
... | ... | |
2383 |
2383 |
login(app)
|
2384 |
2384 |
# import a source from a file
|
2385 |
2385 |
resp = app.get('/manage/agendas/%s/settings' % agenda.pk)
|
2386 |
|
resp = resp.click('upload')
|
|
2386 |
resp = resp.click('manage exceptions')
|
2387 |
2387 |
resp.form['ics_file'] = Upload('exceptions.ics', ics_file_content, 'text/calendar')
|
2388 |
2388 |
resp = resp.form.submit(status=302).follow()
|
2389 |
2389 |
assert TimePeriodException.objects.filter(desk=desk).count() == 2
|
... | ... | |
2394 |
2394 |
|
2395 |
2395 |
# replace the source
|
2396 |
2396 |
resp = app.get('/manage/agendas/%s/settings' % agenda.pk)
|
2397 |
|
resp = resp.click('upload')
|
|
2397 |
resp = resp.click('manage exceptions')
|
2398 |
2398 |
resp = resp.click(href='/manage/time-period-exceptions-source/%d/replace' % source.pk)
|
2399 |
2399 |
resp.form['ics_newfile'] = Upload('exceptions.ics', ics_file_content, 'text/calendar')
|
2400 |
2400 |
resp = resp.form.submit().follow()
|
... | ... | |
2429 |
2429 |
login(app)
|
2430 |
2430 |
# import a source from an url
|
2431 |
2431 |
resp = app.get('/manage/agendas/%s/settings' % agenda.pk)
|
2432 |
|
resp = resp.click('upload')
|
|
2432 |
resp = resp.click('manage exceptions')
|
2433 |
2433 |
resp.form['ics_url'] = 'http://example.com/foo.ics'
|
2434 |
2434 |
mocked_response = mock.Mock()
|
2435 |
2435 |
mocked_response.text = ics_url_content
|
... | ... | |
2442 |
2442 |
|
2443 |
2443 |
# refresh the source
|
2444 |
2444 |
resp = app.get('/manage/agendas/%s/settings' % agenda.pk)
|
2445 |
|
resp = resp.click('upload')
|
|
2445 |
resp = resp.click('manage exceptions')
|
2446 |
2446 |
mocked_response = mock.Mock()
|
2447 |
2447 |
mocked_response.text = ics_url_content
|
2448 |
2448 |
mocked_get.return_value = mocked_response
|
... | ... | |
2468 |
2468 |
login(app)
|
2469 |
2469 |
resp = app.get('/manage/agendas/%d/' % agenda.pk).follow()
|
2470 |
2470 |
resp = resp.click('Settings')
|
2471 |
|
resp = resp.click('upload')
|
|
2471 |
resp = resp.click('manage exceptions')
|
2472 |
2472 |
assert 'Holidays' in resp.text
|
2473 |
2473 |
assert 'disabled' not in resp.text
|
2474 |
2474 |
assert 'refresh' not in resp.text
|
... | ... | |
2476 |
2476 |
resp = resp.click('disable').follow()
|
2477 |
2477 |
assert not TimePeriodException.objects.exists()
|
2478 |
2478 |
|
2479 |
|
resp = resp.click('upload')
|
|
2479 |
resp = resp.click('manage exceptions')
|
2480 |
2480 |
assert 'Holidays' in resp.text
|
2481 |
2481 |
assert 'disabled' in resp.text
|
2482 |
2482 |
|
2483 |
2483 |
resp = resp.click('enable').follow()
|
2484 |
2484 |
assert TimePeriodException.objects.exists()
|
2485 |
2485 |
|
2486 |
|
resp = resp.click('upload')
|
|
2486 |
resp = resp.click('manage exceptions')
|
2487 |
2487 |
assert 'disabled' not in resp.text
|
2488 |
2488 |
|
2489 |
2489 |
|
... | ... | |
2499 |
2499 |
login(app)
|
2500 |
2500 |
resp = app.get('/manage/agendas/%d/' % agenda.pk).follow()
|
2501 |
2501 |
resp = resp.click('Settings')
|
2502 |
|
resp = resp.click('upload')
|
|
2502 |
resp = resp.click('manage exceptions')
|
2503 |
2503 |
assert 'test.ics' in resp.text
|
2504 |
2504 |
|
2505 |
2505 |
assert app.get('/manage/time-period-exceptions-source/%s/toggle' % source.pk, status=404)
|
2506 |
|
-
|