848 |
848 |
|
849 |
849 |
|
850 |
850 |
def test_meetings_agenda_add_time_period(app, admin_user):
|
851 |
|
agenda = Agenda(label=u'Foo bar', kind='meetings')
|
852 |
|
agenda.save()
|
|
851 |
agenda = Agenda.objects.create(label=u'Foo bar', kind='meetings')
|
853 |
852 |
desk = Desk.objects.create(agenda=agenda, label='Desk A')
|
854 |
|
MeetingType(agenda=agenda, label='Blah').save()
|
|
853 |
MeetingType.objects.create(agenda=agenda, label='Blah')
|
855 |
854 |
app = login(app)
|
856 |
|
resp = app.get('/manage/agendas/%s/' % agenda.id, status=302).follow()
|
857 |
|
resp = resp.click('Settings')
|
858 |
|
resp = resp.click('Add a time period')
|
|
855 |
resp = app.get('/manage/agendas/%s/settings' % agenda.pk)
|
|
856 |
resp = resp.click('Add a time period$')
|
859 |
857 |
resp.form['weekdays-2'].checked = True
|
860 |
858 |
resp.form['start_time'] = '10:00'
|
861 |
859 |
resp.form['end_time'] = '17:00'
|
... | ... | |
1054 |
1052 |
|
1055 |
1053 |
|
1056 |
1054 |
def test_meetings_agenda_add_time_period_exception(app, admin_user):
|
|
1055 |
agenda = Agenda.objects.create(label=u'Foo bar', kind='meetings')
|
|
1056 |
desk = Desk.objects.create(agenda=agenda, label='Desk A')
|
|
1057 |
MeetingType.objects.create(agenda=agenda, label='Blah')
|
1057 |
1058 |
app = login(app)
|
1058 |
|
resp = app.get('/manage/', status=200)
|
1059 |
|
resp = resp.click('New')
|
1060 |
|
resp.form['label'] = 'Foo bar'
|
1061 |
|
resp.form['kind'] = 'meetings'
|
1062 |
|
resp = resp.form.submit().follow()
|
1063 |
|
agenda = Agenda.objects.first()
|
1064 |
|
resp = resp.click('New Meeting Type')
|
1065 |
|
resp.form['label'] = 'Blah'
|
1066 |
|
resp.form['duration'] = '60'
|
1067 |
|
resp = resp.form.submit().follow()
|
1068 |
|
# adding a new time period
|
1069 |
|
resp = resp.click('Add a time period')
|
1070 |
|
resp.form['weekdays-2'].checked = True
|
1071 |
|
resp.form['start_time'] = '10:00'
|
1072 |
|
resp.form['end_time'] = '17:00'
|
1073 |
|
resp = resp.form.submit().follow()
|
|
1059 |
resp = app.get('/manage/agendas/%s/settings' % agenda.pk)
|
1074 |
1060 |
resp = resp.click('Add a time period exception')
|
1075 |
1061 |
today = datetime.datetime.today().replace(hour=0, minute=0, second=0, microsecond=0)
|
1076 |
1062 |
tomorrow = make_aware(today + datetime.timedelta(days=1))
|
... | ... | |
1101 |
1087 |
assert TimePeriodException.objects.count() == 2
|
1102 |
1088 |
assert 'Exception 1' in resp.text
|
1103 |
1089 |
assert 'Exception 2' not in resp.text
|
1104 |
|
resp = resp.click(
|
1105 |
|
href="/manage/time-period-exceptions/%d/exception-extract-list" % agenda.desk_set.first().pk
|
1106 |
|
)
|
|
1090 |
resp = resp.click(href="/manage/time-period-exceptions/%d/exception-extract-list" % desk.pk)
|
1107 |
1091 |
assert 'Exception 1' in resp.text
|
1108 |
1092 |
assert 'Exception 2' in resp.text
|
1109 |
1093 |
|
... | ... | |
1292 |
1276 |
def test_agenda_import_time_period_exception_from_ics(app, admin_user):
|
1293 |
1277 |
agenda = Agenda.objects.create(label='Example', kind='meetings')
|
1294 |
1278 |
desk = Desk.objects.create(agenda=agenda, label='Test Desk')
|
1295 |
|
MeetingType(agenda=agenda, label='Foo').save()
|
|
1279 |
MeetingType.objects.create(agenda=agenda, label='Foo')
|
1296 |
1280 |
login(app)
|
1297 |
|
resp = app.get('/manage/agendas/%d/' % agenda.pk).follow()
|
1298 |
|
resp = resp.click('Settings')
|
1299 |
|
assert 'Import exceptions from .ics' not in resp.text
|
1300 |
|
|
1301 |
|
TimePeriod.objects.create(
|
1302 |
|
weekday=1, desk=desk, start_time=datetime.time(10, 0), end_time=datetime.time(12, 0)
|
1303 |
|
)
|
1304 |
|
|
1305 |
|
resp = app.get('/manage/agendas/%d/' % agenda.pk).follow()
|
1306 |
|
resp = resp.click('Settings')
|
|
1281 |
resp = app.get('/manage/agendas/%d/settings' % agenda.pk)
|
1307 |
1282 |
assert 'Import exceptions from .ics' in resp.text
|
1308 |
1283 |
resp = resp.click('upload')
|
1309 |
1284 |
assert "To add new exceptions, you can upload a file or specify an address to a remote calendar." in resp
|
1310 |
1285 |
resp = resp.form.submit(status=200)
|
1311 |
1286 |
assert 'Please provide an ICS File or an URL.' in resp.text
|
1312 |
|
resp = app.get('/manage/agendas/%d/' % agenda.pk).follow()
|
1313 |
|
resp = resp.click('Settings')
|
|
1287 |
resp = app.get('/manage/agendas/%d/settings' % agenda.pk)
|
1314 |
1288 |
resp = resp.click('upload')
|
1315 |
1289 |
resp.form['ics_file'] = Upload('exceptions.ics', b'invalid content', 'text/calendar')
|
1316 |
1290 |
resp = resp.form.submit(status=200)
|
... | ... | |
1343 |
1317 |
SUMMARY:New Year's Eve
|
1344 |
1318 |
END:VEVENT
|
1345 |
1319 |
END:VCALENDAR"""
|
1346 |
|
resp = app.get('/manage/agendas/%d/' % agenda.pk).follow()
|
1347 |
|
resp = resp.click('Settings')
|
|
1320 |
resp = app.get('/manage/agendas/%d/settings' % agenda.pk)
|
1348 |
1321 |
resp = resp.click('upload')
|
1349 |
1322 |
resp.form['ics_file'] = Upload('exceptions.ics', ics_with_exceptions, 'text/calendar')
|
1350 |
1323 |
resp = resp.form.submit(status=302)
|
... | ... | |
1391 |
1364 |
def test_agenda_import_time_period_exception_with_remote_ics(mocked_get, app, admin_user):
|
1392 |
1365 |
agenda = Agenda.objects.create(label='New Example', kind='meetings')
|
1393 |
1366 |
desk = Desk.objects.create(agenda=agenda, label='New Desk')
|
1394 |
|
MeetingType(agenda=agenda, label='Bar').save()
|
|
1367 |
MeetingType.objects.create(agenda=agenda, label='Bar')
|
1395 |
1368 |
login(app)
|
1396 |
|
resp = app.get('/manage/agendas/%d/' % agenda.pk).follow()
|
1397 |
|
resp = resp.click('Settings')
|
1398 |
|
assert 'Import exceptions from .ics' not in resp.text
|
1399 |
|
|
1400 |
|
TimePeriod.objects.create(
|
1401 |
|
weekday=1, desk=desk, start_time=datetime.time(10, 0), end_time=datetime.time(12, 0)
|
1402 |
|
)
|
1403 |
|
|
1404 |
|
resp = app.get('/manage/agendas/%d/' % agenda.pk).follow()
|
1405 |
|
resp = resp.click('Settings')
|
|
1369 |
resp = app.get('/manage/agendas/%d/settings' % agenda.pk)
|
1406 |
1370 |
resp = resp.click('upload')
|
1407 |
1371 |
|
1408 |
1372 |
assert 'ics_file' in resp.form.fields
|
... | ... | |
1435 |
1399 |
def test_agenda_import_time_period_exception_with_remote_ics_no_events(mocked_get, app, admin_user):
|
1436 |
1400 |
agenda = Agenda.objects.create(label='New Example', kind='meetings')
|
1437 |
1401 |
desk = Desk.objects.create(agenda=agenda, label='New Desk')
|
1438 |
|
MeetingType(agenda=agenda, label='Bar').save()
|
|
1402 |
MeetingType.objects.create(agenda=agenda, label='Bar')
|
1439 |
1403 |
login(app)
|
1440 |
|
resp = app.get('/manage/agendas/%d/' % agenda.pk).follow()
|
1441 |
|
resp = resp.click('Settings')
|
1442 |
|
assert 'Import exceptions from .ics' not in resp.text
|
1443 |
|
|
1444 |
|
TimePeriod.objects.create(
|
1445 |
|
weekday=1, desk=desk, start_time=datetime.time(10, 0), end_time=datetime.time(12, 0)
|
1446 |
|
)
|
1447 |
|
|
1448 |
|
resp = app.get('/manage/agendas/%d/' % agenda.pk).follow()
|
1449 |
|
resp = resp.click('Settings')
|
|
1404 |
resp = app.get('/manage/agendas/%d/settings' % agenda.pk)
|
1450 |
1405 |
resp = resp.click('upload')
|
1451 |
1406 |
resp.form['ics_url'] = 'http://example.com/foo.ics'
|
1452 |
1407 |
mocked_response = mock.Mock()
|
... | ... | |
1470 |
1425 |
):
|
1471 |
1426 |
agenda = Agenda.objects.create(label='New Example', kind='meetings')
|
1472 |
1427 |
desk = Desk.objects.create(agenda=agenda, label='New Desk')
|
1473 |
|
MeetingType(agenda=agenda, label='Bar').save()
|
|
1428 |
MeetingType.objects.create(agenda=agenda, label='Bar')
|
1474 |
1429 |
login(app)
|
1475 |
|
resp = app.get('/manage/agendas/%d/' % agenda.pk).follow()
|
1476 |
|
resp = resp.click('Settings')
|
1477 |
|
assert 'Import exceptions from .ics' not in resp.text
|
1478 |
|
|
1479 |
|
TimePeriod.objects.create(
|
1480 |
|
weekday=1, desk=desk, start_time=datetime.time(10, 0), end_time=datetime.time(12, 0)
|
1481 |
|
)
|
1482 |
|
|
1483 |
|
resp = app.get('/manage/agendas/%d/' % agenda.pk).follow()
|
1484 |
|
resp = resp.click('Settings')
|
|
1430 |
resp = app.get('/manage/agendas/%d/settings' % agenda.pk)
|
1485 |
1431 |
resp = resp.click('upload')
|
1486 |
1432 |
|
1487 |
1433 |
assert 'ics_file' in resp.form.fields
|
... | ... | |
1502 |
1448 |
def test_agenda_import_time_period_exception_from_forbidden_remote_ics(mocked_get, app, admin_user):
|
1503 |
1449 |
agenda = Agenda.objects.create(label='New Example', kind='meetings')
|
1504 |
1450 |
desk = Desk.objects.create(agenda=agenda, label='New Desk')
|
1505 |
|
MeetingType(agenda=agenda, label='Bar').save()
|
|
1451 |
MeetingType.objects.create(agenda=agenda, label='Bar')
|
1506 |
1452 |
login(app)
|
1507 |
|
resp = app.get('/manage/agendas/%d/' % agenda.pk).follow()
|
1508 |
|
resp = resp.click('Settings')
|
1509 |
|
assert 'Import exceptions from .ics' not in resp.text
|
1510 |
|
|
1511 |
|
TimePeriod.objects.create(
|
1512 |
|
weekday=1, desk=desk, start_time=datetime.time(10, 0), end_time=datetime.time(12, 0)
|
1513 |
|
)
|
1514 |
|
|
1515 |
|
resp = app.get('/manage/agendas/%d/' % agenda.pk).follow()
|
1516 |
|
resp = resp.click('Settings')
|
|
1453 |
resp = app.get('/manage/agendas/%d/settings' % agenda.pk)
|
1517 |
1454 |
resp = resp.click('upload')
|
1518 |
1455 |
resp.form['ics_url'] = 'http://example.com/foo.ics'
|
1519 |
1456 |
mocked_response = mock.Mock()
|
... | ... | |
1532 |
1469 |
def test_agenda_import_time_period_exception_from_remote_ics_with_ssl_error(mocked_get, app, admin_user):
|
1533 |
1470 |
agenda = Agenda.objects.create(label='New Example', kind='meetings')
|
1534 |
1471 |
desk = Desk.objects.create(agenda=agenda, label='New Desk')
|
1535 |
|
MeetingType(agenda=agenda, label='Bar').save()
|
|
1472 |
MeetingType.objects.create(agenda=agenda, label='Bar')
|
1536 |
1473 |
login(app)
|
1537 |
|
resp = app.get('/manage/agendas/%d/' % agenda.pk).follow()
|
1538 |
|
resp = resp.click('Settings')
|
1539 |
|
assert 'Import exceptions from .ics' not in resp.text
|
1540 |
|
TimePeriod.objects.create(
|
1541 |
|
weekday=1, desk=desk, start_time=datetime.time(10, 0), end_time=datetime.time(12, 0)
|
1542 |
|
)
|
1543 |
|
|
1544 |
|
resp = app.get('/manage/agendas/%d/' % agenda.pk).follow()
|
1545 |
|
resp = resp.click('Settings')
|
|
1474 |
resp = app.get('/manage/agendas/%d/settings' % agenda.pk)
|
1546 |
1475 |
resp = resp.click('upload')
|
1547 |
1476 |
resp.form['ics_url'] = 'https://example.com/foo.ics'
|
1548 |
1477 |
mocked_response = mock.Mock()
|
1549 |
|
-
|