1
Functional doctest for Section Journal with Consecutive Periods as One
2
======================================================================
4
Let's log in with the manager account:
6
>>> from schooltool.lyceum.journal.ftests import printGradebookTable
7
>>> manager = Browser('manager', 'schooltool')
9
Set up a basic school year:
11
>>> manager.getLink('Manage').click()
12
>>> manager.getLink('School Years').click()
13
>>> manager.getLink('New School Year').click()
14
>>> manager.getControl('Title').value = '2005'
15
>>> manager.getControl('First day').value = '2005-09-01'
16
>>> manager.getControl('Last day').value = '2006-07-31'
17
>>> manager.getControl('Add').click()
21
>>> from schooltool.basicperson.browser.ftests.setup import addPerson
22
>>> addPerson('Pete', 'Teacher', username='pete', password='pwd', groups=['teachers'])
26
>>> manager.getLink('2005').click()
27
>>> manager.getLink('Groups').click()
28
>>> manager.getLink('New Group').click()
29
>>> manager.getControl('Title').value = "2a"
30
>>> manager.getControl('Add').click()
34
>>> addPerson('Frum', 'Student', username='frum', password='pwd', groups=['students', '2a'])
35
>>> addPerson('Grum', 'Student', username='grum', password='pwd', groups=['students', '2a'])
39
>>> manager.getLink('2005').click()
40
>>> manager.getLink('Add a new term').click()
41
>>> manager.getControl('Title').value = '2005 Fall 1'
42
>>> manager.getControl('Start date').value = '2005-09-01'
43
>>> manager.getControl('End date').value = '2005-10-31'
44
>>> manager.getControl('Next').click()
45
>>> manager.getControl('Saturday').click()
46
>>> manager.getControl('Sunday').click()
47
>>> manager.getControl('Add term').click()
51
>>> manager.getLink('2005').click()
52
>>> manager.getLink('School Timetables').click()
53
>>> manager.getLink('New Timetable').click()
54
>>> manager.getLink('simple weekly timetable schema').click()
56
>>> manager.getControl(name='field.period_name_1').value = 'A'
57
>>> manager.getControl(name='field.period_start_1').value = '9:00'
58
>>> manager.getControl(name='field.period_finish_1').value = '10:00'
60
>>> manager.getControl(name='field.period_name_2').value = 'B'
61
>>> manager.getControl(name='field.period_start_2').value = '10:30'
62
>>> manager.getControl(name='field.period_finish_2').value = '11:30'
64
>>> manager.getControl('Create').click()
68
>>> from schooltool.app.browser.ftests.setup import addSection
69
>>> from schooltool.app.browser.ftests.setup import addCourse
70
>>> addCourse("History", "2005")
72
>>> addSection("History", "2005", "2005 Fall 1",
73
... title="History (1a)",
74
... instructors=['Pete'],
75
... members=['Grum', 'Frum'])
77
>>> addSection("History", "2005", "2005 Fall 1",
78
... title="History (1a)",
79
... instructors=['Pete'],
80
... members=['Grum', 'Frum'])
82
Let's schedule the sections:
84
>>> manager.getLink('2005').click()
85
>>> manager.getLink('2005 Fall 1').click()
86
>>> manager.getLink('Sections').click()
87
>>> manager.getLink(url='sections/1').click()
88
>>> manager.getLink('Schedule').click()
89
>>> manager.getLink('Add Timetable').click()
90
>>> manager.getControl('Add').click()
91
>>> manager.getControl(name='Tuesday.A').value = True
92
>>> manager.getControl(name='Tuesday.B').value = True
93
>>> manager.getControl(name='Wednesday.A').value = True
94
>>> manager.getControl('Save').click()
96
Let's log in with the teacher account:
98
>>> teacher = Browser('pete', 'pwd')
100
Since we haven't marked the timetable for treating consecutive periods as one
101
period, we will note that all periods will show up in the section journal,
102
including Tuesday B which comes right after Tuesday A. This is the default
105
>>> teacher.open('http://localhost/persons/frum/calendar/2005-09-06')
106
>>> teacher.getLink('Journal', index=1).click()
107
>>> teacher.getLink('Frum').click()
108
>>> printGradebookTable(teacher.contents)
109
+-----+------------+-----------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+----------+---------+
110
| Nr. | First Name | Last Name | 06 | 06 B | 07 A | 13 A | 13 B | 14 A | 20 A | 20 B | 21 A | 27 A | 27 B | 28 A | Average | Absences | Tardies |
111
+-----+------------+-----------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+----------+---------+
112
| 1 | Frum | Student | [_____] | [_____] | [_____] | [_____] | [_____] | [_____] | [_____] | [_____] | [_____] | [_____] | [_____] | [_____] | | | |
113
| 2 | Grum | Student | [_____] | | | | | | | | | | | | | | |
114
+-----+------------+-----------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+----------+---------+
116
Let's change the section schedule to have that flag set to True:
118
>>> manager.getLink('2005').click()
119
>>> manager.getLink('2005 Fall 1').click()
120
>>> manager.getLink('Sections').click()
121
>>> manager.getLink(url='sections/1').click()
122
>>> manager.getLink('Schedule').click()
123
>>> manager.getLink('edit periods').click()
124
>>> collapse_periods = manager.getControl(
125
... name='form.widgets.consecutive_periods_as_one:list')
126
>>> collapse_periods.value = ['true']
127
>>> manager.getControl('Save').click()
129
Now when we look at the section journal, we note that Tuesday B is gone:
131
>>> teacher.open('http://localhost/persons/frum/calendar/2005-09-06')
132
>>> teacher.getLink('Journal', index=1).click()
133
>>> teacher.getLink('Frum').click()
134
>>> printGradebookTable(teacher.contents)
135
+-----+------------+-----------+---------+---------+---------+---------+---------+---------+---------+---------+---------+----------+---------+
136
| Nr. | First Name | Last Name | 06 | 07 A | 13 A | 14 A | 20 A | 21 A | 27 A | 28 A | Average | Absences | Tardies |
137
+-----+------------+-----------+---------+---------+---------+---------+---------+---------+---------+---------+---------+----------+---------+
138
| 1 | Frum | Student | [_____] | [_____] | [_____] | [_____] | [_____] | [_____] | [_____] | [_____] | | | |
139
| 2 | Grum | Student | [_____] | | | | | | | | | | |
140
+-----+------------+-----------+---------+---------+---------+---------+---------+---------+---------+---------+---------+----------+---------+
142
When we mark Frum as if he has skipped some lessons, we see that the view
143
accepts the data and returns it to us:
145
>>> cells = analyze.queryHTML('//table[@class="data"]//input[@type="text"]/@name', teacher.contents)
146
>>> for i in range(8):
147
... teacher.getControl(name=cells[i]).value = 'n'
148
>>> teacher.getControl('Update').click()
149
>>> printGradebookTable(teacher.contents)
150
+-----+------------+-----------+---------+---------+---------+---------+---------+---------+---------+---------+---------+----------+---------+
151
| Nr. | First Name | Last Name | 06 | 07 A | 13 A | 14 A | 20 A | 21 A | 27 A | 28 A | Average | Absences | Tardies |
152
+-----+------------+-----------+---------+---------+---------+---------+---------+---------+---------+---------+---------+----------+---------+
153
| 1 | Frum | Student | [a____] | [a____] | [a____] | [a____] | [a____] | [a____] | [a____] | [a____] | | 8 | |
154
| 2 | Grum | Student | [_____] | | | | | | | | | | |
155
+-----+------------+-----------+---------+---------+---------+---------+---------+---------+---------+---------+---------+----------+---------+