150 |
150 |
assert resp2.content_type == 'application/javascript'
|
151 |
151 |
|
152 |
152 |
|
|
153 |
def test_events_agenda_redirect(app, admin_user):
|
|
154 |
agenda = Agenda.objects.create(label=u'Foo Bar', kind='events')
|
|
155 |
|
|
156 |
app = login(app)
|
|
157 |
resp = app.get('/manage/agendas/%s/' % agenda.pk, status=302)
|
|
158 |
assert resp.location.endswith('/manage/agendas/%s/month/' % agenda.pk)
|
|
159 |
|
|
160 |
|
|
161 |
@freezegun.freeze_time('2020-07-12')
|
|
162 |
def test_events_agenda_month_redirect(app, admin_user):
|
|
163 |
agenda = Agenda.objects.create(label=u'Foo Bar', kind='events')
|
|
164 |
|
|
165 |
app = login(app)
|
|
166 |
# no event, redirect to current month
|
|
167 |
resp = app.get('/manage/agendas/%s/month/' % agenda.pk, status=302)
|
|
168 |
assert resp.location.endswith('/manage/agendas/%s/2020/7/' % agenda.pk)
|
|
169 |
|
|
170 |
# only past events, redirect to last event month
|
|
171 |
Event.objects.create(
|
|
172 |
agenda=agenda, places=1, start_datetime=now() - datetime.timedelta(days=60),
|
|
173 |
)
|
|
174 |
resp = app.get('/manage/agendas/%s/month/' % agenda.pk, status=302)
|
|
175 |
assert resp.location.endswith('/manage/agendas/%s/2020/5/' % agenda.pk)
|
|
176 |
Event.objects.create(
|
|
177 |
agenda=agenda, places=1, start_datetime=now() - datetime.timedelta(days=30),
|
|
178 |
)
|
|
179 |
resp = app.get('/manage/agendas/%s/month/' % agenda.pk, status=302)
|
|
180 |
assert resp.location.endswith('/manage/agendas/%s/2020/6/' % agenda.pk)
|
|
181 |
|
|
182 |
# future events
|
|
183 |
Event.objects.create(
|
|
184 |
agenda=agenda, places=1, start_datetime=now() + datetime.timedelta(days=60),
|
|
185 |
)
|
|
186 |
resp = app.get('/manage/agendas/%s/month/' % agenda.pk, status=302)
|
|
187 |
assert resp.location.endswith('/manage/agendas/%s/2020/9/' % agenda.pk)
|
|
188 |
Event.objects.create(
|
|
189 |
agenda=agenda, places=1, start_datetime=now() + datetime.timedelta(days=30),
|
|
190 |
)
|
|
191 |
resp = app.get('/manage/agendas/%s/month/' % agenda.pk, status=302)
|
|
192 |
assert resp.location.endswith('/manage/agendas/%s/2020/8/' % agenda.pk)
|
|
193 |
|
|
194 |
# wrong kind
|
|
195 |
agenda.kind = 'virtual'
|
|
196 |
agenda.save()
|
|
197 |
resp = app.get('/manage/agendas/%s/month/' % agenda.pk, status=302)
|
|
198 |
assert resp.location.endswith('/manage/agendas/%s/' % agenda.pk)
|
|
199 |
agenda.kind = 'meetings'
|
|
200 |
agenda.save()
|
|
201 |
resp = app.get('/manage/agendas/%s/month/' % agenda.pk, status=302)
|
|
202 |
assert resp.location.endswith('/manage/agendas/%s/' % agenda.pk)
|
|
203 |
|
|
204 |
|
|
205 |
@freezegun.freeze_time('2020-07-12')
|
|
206 |
def test_meetings_agenda_redirect(app, admin_user):
|
|
207 |
agenda = Agenda.objects.create(label=u'Foo Bar', kind='meetings')
|
|
208 |
|
|
209 |
app = login(app)
|
|
210 |
resp = app.get('/manage/agendas/%s/' % agenda.pk, status=302)
|
|
211 |
assert resp.location.endswith('/manage/agendas/%s/2020/7/12/' % agenda.pk)
|
|
212 |
|
|
213 |
|
|
214 |
def test_virtual_agenda_redirect(app, admin_user):
|
|
215 |
agenda = Agenda.objects.create(label=u'Foo Bar', kind='virtual')
|
|
216 |
|
|
217 |
app = login(app)
|
|
218 |
resp = app.get('/manage/agendas/%s/' % agenda.pk) # no redirection
|
|
219 |
|
|
220 |
|
153 |
221 |
def test_view_agendas_as_manager(app, manager_user):
|
154 |
222 |
agenda = Agenda(label=u'Foo Bar')
|
155 |
223 |
agenda.view_role = manager_user.groups.all()[0]
|
... | ... | |
639 |
707 |
agenda.view_role = manager_user.groups.all()[0]
|
640 |
708 |
agenda.save()
|
641 |
709 |
app = login(app, username='manager', password='manager')
|
642 |
|
resp = app.get('/manage/', status=200)
|
643 |
|
resp = app.get('/manage/agendas/add/', status=403)
|
|
710 |
app.get('/manage/agendas/add/', status=403)
|
644 |
711 |
|
645 |
712 |
|
646 |
713 |
def test_options_agenda(app, admin_user):
|
647 |
714 |
agenda = Agenda(label=u'Foo bar')
|
648 |
715 |
agenda.save()
|
649 |
716 |
app = login(app)
|
650 |
|
resp = app.get('/manage/', status=200)
|
651 |
|
resp = resp.click('Foo bar').follow()
|
652 |
|
resp = resp.click('Settings')
|
|
717 |
resp = app.get('/manage/agendas/%s/settings' % agenda.pk)
|
653 |
718 |
resp = resp.click('Options')
|
654 |
719 |
assert resp.form['label'].value == 'Foo bar'
|
655 |
720 |
resp.form['label'] = 'Foo baz'
|
... | ... | |
691 |
756 |
agenda.save()
|
692 |
757 |
app = login(app, username='manager', password='manager')
|
693 |
758 |
resp = app.get('/manage/', status=200)
|
694 |
|
resp = resp.click('Foo bar')
|
695 |
|
assert not 'Settings' in resp.text
|
|
759 |
resp = resp.click('Foo bar').follow().follow()
|
|
760 |
assert 'Settings' not in resp.text
|
696 |
761 |
resp = app.get('/manage/agendas/%s/settings' % agenda.id, status=403)
|
697 |
762 |
resp = app.get('/manage/agendas/%s/edit' % agenda.id, status=403)
|
698 |
763 |
agenda.kind = 'meetings'
|
... | ... | |
707 |
772 |
agenda.edit_role = manager_user.groups.all()[0]
|
708 |
773 |
agenda.save()
|
709 |
774 |
|
710 |
|
resp = app.get('/manage/', status=200)
|
711 |
|
resp = resp.click('Foo bar').follow()
|
712 |
|
resp = resp.click('Settings')
|
|
775 |
resp = app.get('/manage/agendas/%s/settings' % agenda.pk)
|
713 |
776 |
resp = resp.click('Options')
|
714 |
777 |
assert resp.form['label'].value == 'Foo bar'
|
715 |
778 |
resp.form['label'] = 'Foo baz'
|
... | ... | |
805 |
868 |
agenda.save()
|
806 |
869 |
app = login(app)
|
807 |
870 |
resp = app.get('/manage/', status=200)
|
808 |
|
resp = resp.click('Foo bar').follow()
|
809 |
|
resp = resp.click('Settings')
|
|
871 |
resp = app.get('/manage/agendas/%s/settings' % agenda.pk)
|
810 |
872 |
resp = resp.click('Delete')
|
811 |
873 |
resp = resp.form.submit()
|
812 |
874 |
assert resp.location.endswith('/manage/')
|
813 |
875 |
resp = resp.follow()
|
814 |
|
assert not 'Foo bar' in resp.text
|
|
876 |
assert 'Foo bar' not in resp.text
|
815 |
877 |
|
816 |
878 |
|
817 |
879 |
def test_delete_busy_agenda(app, admin_user):
|
... | ... | |
821 |
883 |
event.save()
|
822 |
884 |
|
823 |
885 |
app = login(app)
|
824 |
|
resp = app.get('/manage/', status=200)
|
825 |
|
resp = resp.click('Foo bar').follow()
|
826 |
|
resp = resp.click('Settings')
|
|
886 |
resp = app.get('/manage/agendas/%s/settings' % agenda.id)
|
827 |
887 |
resp = resp.click('Delete')
|
828 |
888 |
assert 'Are you sure you want to delete this?' in resp.text
|
829 |
889 |
|
830 |
890 |
booking = Booking(event=event)
|
831 |
891 |
booking.save()
|
832 |
|
resp = app.get('/manage/', status=200)
|
833 |
|
resp = resp.click('Foo bar').follow()
|
834 |
|
resp = resp.click('Settings')
|
|
892 |
resp = app.get('/manage/agendas/%s/settings' % agenda.id)
|
835 |
893 |
resp = resp.click('Delete')
|
836 |
894 |
assert 'This cannot be removed' in resp.text
|
837 |
895 |
|
838 |
896 |
booking.cancellation_datetime = now()
|
839 |
897 |
booking.save()
|
840 |
|
resp = app.get('/manage/', status=200)
|
841 |
|
resp = resp.click('Foo bar').follow()
|
842 |
|
resp = resp.click('Settings')
|
|
898 |
resp = app.get('/manage/agendas/%s/settings' % agenda.id)
|
843 |
899 |
resp = resp.click('Delete')
|
844 |
900 |
assert 'Are you sure you want to delete this?' in resp.text
|
845 |
901 |
|
... | ... | |
855 |
911 |
agenda.edit_role = manager_user.groups.all()[0]
|
856 |
912 |
agenda.save()
|
857 |
913 |
app = login(app, username='manager', password='manager')
|
858 |
|
resp = app.get('/manage/', status=200)
|
859 |
|
resp = resp.click('Foo bar').follow()
|
860 |
|
resp = resp.click('Settings')
|
|
914 |
resp = app.get('/manage/agendas/%s/settings' % agenda.pk)
|
861 |
915 |
assert 'Options' in resp.text
|
862 |
916 |
assert 'Delete' not in resp.text
|
863 |
917 |
resp = app.get('/manage/agendas/%s/delete' % agenda.id, status=403)
|
... | ... | |
874 |
928 |
|
875 |
929 |
app = login(app)
|
876 |
930 |
resp = app.get('/manage/', status=200)
|
877 |
|
resp = resp.click('Foo bar').follow()
|
878 |
|
resp = resp.click('Settings')
|
|
931 |
resp = app.get('/manage/agendas/%s/settings' % agenda.pk)
|
879 |
932 |
desk_page = resp.click('Desk A')
|
880 |
933 |
desk_delete_page = desk_page.click('Delete')
|
881 |
934 |
assert 'Are you sure you want to delete this?' in desk_delete_page.text
|
... | ... | |
964 |
1017 |
agenda.edit_role = manager_user.groups.all()[0]
|
965 |
1018 |
agenda.save()
|
966 |
1019 |
|
967 |
|
resp = app.get('/manage/agendas/%s/' % agenda.id).follow()
|
968 |
|
resp = resp.click('Settings')
|
|
1020 |
resp = app.get('/manage/agendas/%s/settings' % agenda.pk)
|
969 |
1021 |
assert '<h2>Settings' in resp.text
|
970 |
1022 |
resp = resp.click('New Event')
|
971 |
1023 |
resp.form['start_datetime$date'] = '2016-02-15'
|
... | ... | |
1409 |
1461 |
agenda = Agenda(label=u'Foo bar', kind='meetings')
|
1410 |
1462 |
agenda.save()
|
1411 |
1463 |
app = login(app)
|
1412 |
|
resp = app.get('/manage/agendas/%s/' % agenda.id).follow()
|
1413 |
|
resp = resp.click('Settings')
|
|
1464 |
resp = app.get('/manage/agendas/%s/settings' % agenda.pk)
|
1414 |
1465 |
assert "This agenda doesn't have any meeting type yet." in resp.text
|
1415 |
1466 |
resp = resp.click('New Meeting Type')
|
1416 |
1467 |
resp.form['label'] = 'Blah'
|
... | ... | |
1441 |
1492 |
meeting_type.save()
|
1442 |
1493 |
|
1443 |
1494 |
app = login(app)
|
1444 |
|
resp = app.get('/manage/agendas/%s/' % agenda.id).follow()
|
1445 |
|
resp = resp.click('Settings')
|
|
1495 |
resp = app.get('/manage/agendas/%s/settings' % agenda.pk)
|
1446 |
1496 |
resp = resp.click('Blah')
|
1447 |
1497 |
resp = resp.click('Delete')
|
1448 |
1498 |
assert 'Are you sure you want to delete this?' in resp.text
|
... | ... | |
1454 |
1504 |
assert '__deleted__' in meeting_type.slug
|
1455 |
1505 |
|
1456 |
1506 |
# meeting type not showing up anymore
|
1457 |
|
resp = app.get('/manage/', status=200)
|
1458 |
|
resp = resp.click('Foo').follow()
|
1459 |
|
resp = resp.click('Settings')
|
|
1507 |
resp = app.get('/manage/agendas/%s/settings' % agenda.pk)
|
1460 |
1508 |
assert 'Meeting Type Foo' not in resp.text
|
1461 |
1509 |
|
1462 |
1510 |
# it is possible to add a new meeting type with the same slug
|
... | ... | |
1576 |
1624 |
agenda.edit_role = manager_user.groups.all()[0]
|
1577 |
1625 |
agenda.save()
|
1578 |
1626 |
|
1579 |
|
resp = app.get('/manage/agendas/%d/' % agenda.id).follow()
|
1580 |
|
resp = resp.click('Settings')
|
|
1627 |
resp = app.get('/manage/agendas/%s/settings' % agenda.pk)
|
1581 |
1628 |
assert 'Add a time period' in resp.text
|
1582 |
1629 |
assert '/manage/timeperiods/%s/edit' % time_period.id in resp.text
|
1583 |
1630 |
assert '/manage/timeperiods/%s/delete' % time_period.id in resp.text
|
... | ... | |
1598 |
1645 |
agenda = Agenda.objects.get(slug='foo-bar')
|
1599 |
1646 |
MeetingType(agenda=agenda, label='Blah').save()
|
1600 |
1647 |
|
1601 |
|
resp = app.get('/manage/agendas/%s/' % agenda.id).follow()
|
1602 |
|
resp = resp.click('Settings')
|
|
1648 |
resp = app.get('/manage/agendas/%s/settings' % agenda.pk)
|
1603 |
1649 |
resp = resp.click('New Desk')
|
1604 |
1650 |
resp.form['label'] = 'Desk A'
|
1605 |
1651 |
resp = resp.form.submit().follow()
|
... | ... | |
1655 |
1701 |
agenda = Agenda.objects.get(slug='foo-bar')
|
1656 |
1702 |
MeetingType(agenda=agenda, label='Blah').save()
|
1657 |
1703 |
|
1658 |
|
resp = app.get('/manage/agendas/%s/' % agenda.id).follow()
|
1659 |
|
resp = resp.click('Settings')
|
|
1704 |
resp = app.get('/manage/agendas/%s/settings' % agenda.pk)
|
1660 |
1705 |
resp = resp.click('New Desk')
|
1661 |
1706 |
resp.form['label'] = 'Desk A'
|
1662 |
1707 |
resp = resp.form.submit().follow()
|
... | ... | |
1721 |
1766 |
)
|
1722 |
1767 |
Booking.objects.create(event=event)
|
1723 |
1768 |
login(app)
|
1724 |
|
resp = app.get('/manage/agendas/%d/' % agenda.pk).follow()
|
1725 |
|
resp = resp.click('Settings')
|
|
1769 |
resp = app.get('/manage/agendas/%s/settings' % agenda.pk)
|
1726 |
1770 |
resp = resp.click('Add a time period exception')
|
1727 |
1771 |
resp = resp.form.submit() # submit empty form
|
1728 |
1772 |
# fields should be marked with errors
|
... | ... | |
1751 |
1795 |
event=event, cancellation_datetime=make_aware(datetime.datetime(2017, 5, 20, 10, 30))
|
1752 |
1796 |
)
|
1753 |
1797 |
login(app)
|
1754 |
|
resp = app.get('/manage/agendas/%d/' % agenda.pk).follow()
|
1755 |
|
resp = resp.click('Settings')
|
|
1798 |
resp = app.get('/manage/agendas/%s/settings' % agenda.pk)
|
1756 |
1799 |
resp = resp.click('Add a time period exception')
|
1757 |
1800 |
resp.form['start_datetime$date'] = '2017-05-22'
|
1758 |
1801 |
resp.form['start_datetime$time'] = '08:00'
|
... | ... | |
1806 |
1849 |
weekday=1, desk=desk, start_time=datetime.time(10, 0), end_time=datetime.time(12, 0)
|
1807 |
1850 |
)
|
1808 |
1851 |
login(app)
|
1809 |
|
resp = app.get('/manage/agendas/%d/' % agenda.pk).follow()
|
1810 |
|
resp = resp.click('Settings')
|
|
1852 |
resp = app.get('/manage/agendas/%s/settings' % agenda.pk)
|
1811 |
1853 |
resp = resp.click('Add a time period exception')
|
1812 |
1854 |
today = datetime.datetime.today().replace(hour=0, minute=0, second=0, microsecond=0)
|
1813 |
1855 |
tomorrow = make_aware(today + datetime.timedelta(days=15))
|
... | ... | |
1959 |
2001 |
weekday=1, desk=desk, start_time=datetime.time(10, 0), end_time=datetime.time(12, 0)
|
1960 |
2002 |
)
|
1961 |
2003 |
login(app)
|
1962 |
|
resp = app.get('/manage/agendas/%d/' % agenda.pk).follow()
|
1963 |
|
resp = resp.click('Settings')
|
|
2004 |
resp = app.get('/manage/agendas/%s/settings' % agenda.pk)
|
1964 |
2005 |
resp = resp.click('upload')
|
1965 |
2006 |
ics_with_recurrent_exceptions = b"""BEGIN:VCALENDAR
|
1966 |
2007 |
VERSION:2.0
|
... | ... | |
2112 |
2153 |
)
|
2113 |
2154 |
login(app)
|
2114 |
2155 |
# import a source
|
2115 |
|
resp = app.get('/manage/agendas/%d/' % agenda.pk).follow()
|
2116 |
|
resp = resp.click('Settings')
|
|
2156 |
resp = app.get('/manage/agendas/%s/settings' % agenda.pk)
|
2117 |
2157 |
resp = resp.click('upload')
|
2118 |
2158 |
ics_with_recurrent_exceptions = b"""BEGIN:VCALENDAR
|
2119 |
2159 |
VERSION:2.0
|
... | ... | |
2132 |
2172 |
assert source1.timeperiodexception_set.count() == 2
|
2133 |
2173 |
|
2134 |
2174 |
# import another one
|
2135 |
|
resp = app.get('/manage/agendas/%d/' % agenda.pk).follow()
|
2136 |
|
resp = resp.click('Settings')
|
|
2175 |
resp = app.get('/manage/agendas/%s/settings' % agenda.pk)
|
2137 |
2176 |
resp = resp.click('upload')
|
2138 |
2177 |
resp.form['ics_file'] = Upload('exceptions.ics', ics_with_recurrent_exceptions, 'text/calendar')
|
2139 |
2178 |
resp = resp.form.submit(status=302).follow()
|
... | ... | |
2142 |
2181 |
assert source2.timeperiodexception_set.count() == 2
|
2143 |
2182 |
|
2144 |
2183 |
# delete the second one
|
2145 |
|
resp = app.get('/manage/agendas/%d/' % agenda.pk).follow()
|
2146 |
|
resp = resp.click('Settings')
|
|
2184 |
resp = app.get('/manage/agendas/%s/settings' % agenda.pk)
|
2147 |
2185 |
resp = resp.click('upload')
|
2148 |
2186 |
resp = resp.click(href='/manage/time-period-exceptions-source/%d/delete' % source2.pk)
|
2149 |
2187 |
resp = resp.form.submit().follow()
|
... | ... | |
2152 |
2190 |
assert TimePeriodExceptionSource.objects.filter(pk=source2.pk).exists() is False
|
2153 |
2191 |
|
2154 |
2192 |
# delete the first one
|
2155 |
|
resp = app.get('/manage/agendas/%d/' % agenda.pk).follow()
|
2156 |
|
resp = resp.click('Settings')
|
|
2193 |
resp = app.get('/manage/agendas/%s/settings' % agenda.pk)
|
2157 |
2194 |
resp = resp.click('upload')
|
2158 |
2195 |
resp = resp.click(href='/manage/time-period-exceptions-source/%d/delete' % source1.pk)
|
2159 |
2196 |
resp = resp.form.submit().follow()
|
... | ... | |
2182 |
2219 |
|
2183 |
2220 |
login(app)
|
2184 |
2221 |
# import a source from a file
|
2185 |
|
resp = app.get('/manage/agendas/%d/' % agenda.pk).follow()
|
2186 |
|
resp = resp.click('Settings')
|
|
2222 |
resp = app.get('/manage/agendas/%s/settings' % agenda.pk)
|
2187 |
2223 |
resp = resp.click('upload')
|
2188 |
2224 |
resp.form['ics_file'] = Upload('exceptions.ics', ics_file_content, 'text/calendar')
|
2189 |
2225 |
resp = resp.form.submit(status=302).follow()
|
... | ... | |
2194 |
2230 |
old_ics_file_path = source.ics_file.path
|
2195 |
2231 |
|
2196 |
2232 |
# replace the source
|
2197 |
|
resp = app.get('/manage/agendas/%d/' % agenda.pk).follow()
|
2198 |
|
resp = resp.click('Settings')
|
|
2233 |
resp = app.get('/manage/agendas/%s/settings' % agenda.pk)
|
2199 |
2234 |
resp = resp.click('upload')
|
2200 |
2235 |
resp = resp.click(href='/manage/time-period-exceptions-source/%d/replace' % source.pk)
|
2201 |
2236 |
resp.form['ics_newfile'] = Upload('exceptions.ics', ics_file_content, 'text/calendar')
|
... | ... | |
2230 |
2265 |
|
2231 |
2266 |
login(app)
|
2232 |
2267 |
# import a source from an url
|
2233 |
|
resp = app.get('/manage/agendas/%d/' % agenda.pk).follow()
|
2234 |
|
resp = resp.click('Settings')
|
|
2268 |
resp = app.get('/manage/agendas/%s/settings' % agenda.pk)
|
2235 |
2269 |
resp = resp.click('upload')
|
2236 |
2270 |
resp.form['ics_url'] = 'http://example.com/foo.ics'
|
2237 |
2271 |
mocked_response = mock.Mock()
|
... | ... | |
2244 |
2278 |
exceptions = list(source.timeperiodexception_set.order_by('pk'))
|
2245 |
2279 |
|
2246 |
2280 |
# refresh the source
|
2247 |
|
resp = app.get('/manage/agendas/%d/' % agenda.pk).follow()
|
2248 |
|
resp = resp.click('Settings')
|
|
2281 |
resp = app.get('/manage/agendas/%s/settings' % agenda.pk)
|
2249 |
2282 |
resp = resp.click('upload')
|
2250 |
2283 |
mocked_response = mock.Mock()
|
2251 |
2284 |
mocked_response.text = ics_url_content
|
... | ... | |
2261 |
2294 |
agenda = Agenda.objects.create(label='New Example', kind='meetings')
|
2262 |
2295 |
desk = Desk.objects.create(agenda=agenda, label='New Desk')
|
2263 |
2296 |
desk.save()
|
|
2297 |
today = datetime.date.today()
|
2264 |
2298 |
|
2265 |
2299 |
meetingtype = MeetingType(agenda=agenda, label='Bar', duration=30)
|
2266 |
2300 |
meetingtype.save()
|
2267 |
2301 |
|
2268 |
2302 |
login(app)
|
2269 |
|
resp = app.get('/manage/agendas/%s/' % agenda.id, status=302)
|
2270 |
|
today = datetime.date.today()
|
2271 |
|
assert resp.location.endswith('%s/%s/%s/' % (today.year, today.month, today.day))
|
2272 |
|
resp = resp.follow()
|
|
2303 |
resp = app.get('/manage/agendas/%s/%s/%s/%s/' % (agenda.pk, today.year, today.month, today.day))
|
2273 |
2304 |
assert 'No opening hours this day.' in resp.text # no time pediod
|
2274 |
2305 |
|
2275 |
2306 |
timeperiod = TimePeriod(
|
2276 |
2307 |
desk=desk, weekday=today.weekday(), start_time=datetime.time(10, 0), end_time=datetime.time(18, 0)
|
2277 |
2308 |
)
|
2278 |
2309 |
timeperiod.save()
|
2279 |
|
resp = app.get('/manage/agendas/%s/' % agenda.id, status=302).follow()
|
|
2310 |
resp = app.get('/manage/agendas/%s/%s/%s/%s/' % (agenda.pk, today.year, today.month, today.day))
|
2280 |
2311 |
assert 'No opening hours this day.' not in resp.text
|
2281 |
2312 |
assert 'div class="booking' not in resp.text
|
2282 |
2313 |
assert resp.text.count('<tr') == 9 # 10->18 (not included)
|
2283 |
2314 |
|
2284 |
2315 |
timeperiod.end_time = datetime.time(18, 30) # end during an hour
|
2285 |
2316 |
timeperiod.save()
|
2286 |
|
resp = app.get('/manage/agendas/%s/' % agenda.id, status=302).follow()
|
|
2317 |
resp = app.get('/manage/agendas/%s/%s/%s/%s/' % (agenda.pk, today.year, today.month, today.day))
|
2287 |
2318 |
assert resp.text.count('<tr') == 10 # 10->18 (included)
|
2288 |
2319 |
|
2289 |
2320 |
# check opening hours cells
|
... | ... | |
2382 |
2413 |
timeperiod.save()
|
2383 |
2414 |
|
2384 |
2415 |
login(app)
|
2385 |
|
resp = app.get('/manage/agendas/%s/' % agenda.id, status=302).follow()
|
|
2416 |
resp = app.get('/manage/agendas/%s/%s/%s/%s/' % (agenda.pk, today.year, today.month, today.day))
|
2386 |
2417 |
assert resp.text.count('<tr') == 15
|
2387 |
2418 |
assert '<th class="hour">11 p.m.</th>' in resp.text
|
2388 |
2419 |
|
... | ... | |
2444 |
2475 |
assert 'style="height: 600%; top: 100%;"' in resp.text
|
2445 |
2476 |
|
2446 |
2477 |
|
2447 |
|
def test_agenda_events_month_view(app, admin_user, manager_user, api_user):
|
|
2478 |
def test_agenda_events_month_view(app, admin_user):
|
2448 |
2479 |
agenda = Agenda.objects.create(label='Events', kind='events')
|
|
2480 |
today = datetime.date.today()
|
2449 |
2481 |
|
2450 |
2482 |
login(app)
|
2451 |
|
resp = app.get('/manage/agendas/%s/' % agenda.id, status=302)
|
2452 |
|
resp = resp.follow()
|
|
2483 |
resp = app.get('/manage/agendas/%s/%s/%s/' % (agenda.pk, today.year, today.month))
|
2453 |
2484 |
assert "This month doesn't have any event configured." in resp.text
|
2454 |
|
today = datetime.date.today()
|
2455 |
2485 |
assert resp.request.url.endswith('%s/%s/' % (today.year, today.month))
|
2456 |
2486 |
|
2457 |
2487 |
# add event in a future month
|
2458 |
|
event = Event(label='xyz', start_datetime=now() + datetime.timedelta(days=40), places=10, agenda=agenda)
|
2459 |
|
event.save()
|
2460 |
|
resp = app.get('/manage/agendas/%s/' % agenda.id).follow()
|
2461 |
|
assert 'xyz' in resp.text
|
2462 |
|
day = event.start_datetime
|
2463 |
|
assert resp.request.url.endswith('%s/%s/' % (day.year, day.month))
|
2464 |
|
|
|
2488 |
event = Event.objects.create(
|
|
2489 |
label='xyz', start_datetime=now() + datetime.timedelta(days=40), places=10, agenda=agenda
|
|
2490 |
)
|
2465 |
2491 |
with CaptureQueriesContext(connection) as ctx:
|
2466 |
2492 |
app.get(
|
2467 |
2493 |
'/manage/agendas/%s/%s/%s/' % (agenda.id, event.start_datetime.year, event.start_datetime.month)
|
... | ... | |
2472 |
2498 |
resp = app.get('/manage/agendas/%s/%s/%s/' % (agenda.id, today.year, today.month))
|
2473 |
2499 |
assert "This month doesn't have any event configured." in resp.text
|
2474 |
2500 |
|
2475 |
|
# add event in the past
|
2476 |
|
event2 = Event(label='zyx', start_datetime=now() - datetime.timedelta(days=40), places=10, agenda=agenda)
|
2477 |
|
event2.save()
|
2478 |
|
resp = app.get('/manage/agendas/%s/' % agenda.id).follow()
|
2479 |
|
assert 'xyz' in resp.text
|
2480 |
|
day = event.start_datetime # still the future event
|
2481 |
|
assert resp.request.url.endswith('%s/%s/' % (day.year, day.month))
|
2482 |
|
|
2483 |
|
# remove future event
|
2484 |
|
event.delete()
|
2485 |
|
resp = app.get('/manage/agendas/%s/' % agenda.id).follow()
|
2486 |
|
assert 'zyx' in resp.text
|
2487 |
|
day = event2.start_datetime # now the past event
|
2488 |
|
assert resp.request.url.endswith('%s/%s/' % (day.year, day.month))
|
2489 |
|
|
2490 |
2501 |
|
2491 |
2502 |
def test_agenda_month_view(app, admin_user, manager_user, api_user):
|
2492 |
2503 |
agenda = Agenda.objects.create(label='Passeports', kind='meetings')
|
2493 |
2504 |
desk = Desk.objects.create(agenda=agenda, label='Desk A')
|
|
2505 |
today = datetime.date.today()
|
2494 |
2506 |
|
2495 |
2507 |
meetingtype = MeetingType(agenda=agenda, label='passeport', duration=20)
|
2496 |
2508 |
meetingtype.save()
|
2497 |
2509 |
|
2498 |
2510 |
login(app)
|
2499 |
|
resp = app.get('/manage/agendas/%s/' % agenda.id, status=302)
|
2500 |
|
resp = resp.follow()
|
|
2511 |
resp = app.get('/manage/agendas/%s/%d/%d/%d/' % (agenda.pk, today.year, today.month, today.day))
|
2501 |
2512 |
assert 'Month view' in resp.text
|
2502 |
2513 |
resp = resp.click('Month view')
|
2503 |
|
today = datetime.date.today()
|
2504 |
2514 |
assert resp.request.url.endswith('%s/%s/' % (today.year, today.month))
|
2505 |
2515 |
|
2506 |
2516 |
assert 'Day view' in resp.text # date view link should be present
|
... | ... | |
2513 |
2523 |
)
|
2514 |
2524 |
timeperiod.save()
|
2515 |
2525 |
resp = app.get('/manage/agendas/%s/%s/%s/' % (agenda.id, today.year, today.month))
|
2516 |
|
assert not 'No opening hours this month.' in resp.text
|
2517 |
|
assert not '<div class="booking' in resp.text
|
|
2526 |
assert 'No opening hours this month.' not in resp.text
|
|
2527 |
assert '<div class="booking' not in resp.text
|
2518 |
2528 |
first_month_day = today.replace(day=1)
|
2519 |
2529 |
last_month_day = today.replace(day=1, month=today.month + 1) - datetime.timedelta(days=1)
|
2520 |
2530 |
start_week_number = first_month_day.isocalendar()[1]
|
2521 |
|
-
|