/usr/lib/python2.7/dist-packages/schooltool/lyceum/journal/ftests/consecutive_periods.txt is in python-schooltool.lyceum.journal 2.6.3-0ubuntu1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 | Functional doctest for Section Journal with Consecutive Periods as One
======================================================================
Let's log in with the manager account:
>>> from schooltool.lyceum.journal.ftests import printGradebookTable
>>> manager = Browser('manager', 'schooltool')
Set up a basic school year:
>>> manager.getLink('Manage').click()
>>> manager.getLink('School Years').click()
>>> manager.getLink('New School Year').click()
>>> manager.getControl('Title').value = '2005'
>>> manager.getControl('First day').value = '2005-09-01'
>>> manager.getControl('Last day').value = '2006-07-31'
>>> manager.getControl('Add').click()
Add some teachers:
>>> from schooltool.basicperson.browser.ftests.setup import addPerson
>>> addPerson('Pete', 'Teacher', username='pete', password='pwd', groups=['teachers'])
A class:
>>> manager.getLink('2005').click()
>>> manager.getLink('Groups').click()
>>> manager.getLink('New Group').click()
>>> manager.getControl('Title').value = "2a"
>>> manager.getControl('Add').click()
And some students:
>>> addPerson('Frum', 'Student', username='frum', password='pwd', groups=['students', '2a'])
>>> addPerson('Grum', 'Student', username='grum', password='pwd', groups=['students', '2a'])
Add a term:
>>> manager.getLink('2005').click()
>>> manager.getLink('Add a new term').click()
>>> manager.getControl('Title').value = '2005 Fall 1'
>>> manager.getControl('Start date').value = '2005-09-01'
>>> manager.getControl('End date').value = '2005-10-31'
>>> manager.getControl('Next').click()
>>> manager.getControl('Saturday').click()
>>> manager.getControl('Sunday').click()
>>> manager.getControl('Add term').click()
Timetable schema:
>>> manager.getLink('2005').click()
>>> manager.getLink('School Timetables').click()
>>> manager.getLink('New Timetable').click()
>>> manager.getControl('Next').click()
>>> manager.getControl('Days of the week').click()
>>> manager.getControl('Same time each day').click()
>>> manager.getControl(name='field.times').value = '9:00-10:00\n10:30-11:30'
>>> manager.getControl('Next').click()
>>> manager.getControl('Have names').click()
>>> manager.getControl(name='field.periods').value = 'A\nB'
>>> manager.getControl('Next').click()
>>> manager.getControl('Same').click()
>>> manager.getControl('Next').click()
>>> manager.getControl('No').click()
A couple of sections:
>>> from schooltool.app.browser.ftests.setup import addSection
>>> from schooltool.app.browser.ftests.setup import addCourse
>>> addCourse("History", "2005")
>>> addSection("History", "2005", "2005 Fall 1",
... title="History (1a)",
... instructors=['Pete'],
... members=['Grum', 'Frum'])
>>> addSection("History", "2005", "2005 Fall 1",
... title="History (1a)",
... instructors=['Pete'],
... members=['Grum', 'Frum'])
Let's schedule the sections:
>>> manager.getLink('2005').click()
>>> manager.getLink('2005 Fall 1').click()
>>> manager.getLink('Sections').click()
>>> manager.getLink(url='sections/1').click()
>>> manager.getLink('Schedule').click()
>>> manager.getLink('Add Timetable').click()
>>> manager.getControl('Add').click()
>>> manager.getControl(name='period.1-.Period-').value = True
>>> manager.getControl(name='period.1-.Period-2-').value = True
>>> manager.getControl(name='period.2-.Period-').value = True
>>> manager.getControl('Save').click()
Let's log in with the teacher account:
>>> teacher = Browser('pete', 'pwd')
Since we haven't marked the timetable for treating consecutive periods as one
period, we will note that all periods will show up in the section journal,
including Tuesday B which comes right after Tuesday A. This is the default
behavior:
>>> teacher.open('http://localhost/persons/frum/calendar/2005-09-06')
>>> teacher.getLink('Journal', index=1).click()
>>> teacher.getLink('Frum').click()
>>> printGradebookTable(teacher.contents)
+-----+------------+-----------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+----------+---------+---------+
| 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 | Excused |
+-----+------------+-----------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+----------+---------+---------+
| 1 | Frum | Student | [_____] | [_____] | [_____] | [_____] | [_____] | [_____] | [_____] | [_____] | [_____] | [_____] | [_____] | [_____] | | | | |
| 2 | Grum | Student | [_____] | | | | | | | | | | | | | | | |
+-----+------------+-----------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+----------+---------+---------+
Let's change the section schedule to have that flag set to True:
>>> manager.getLink('2005').click()
>>> manager.getLink('2005 Fall 1').click()
>>> manager.getLink('Sections').click()
>>> manager.getLink(url='sections/1').click()
>>> manager.getLink('Schedule').click()
>>> manager.getLink('edit periods').click()
>>> collapse_periods = manager.getControl(
... name='form.widgets.consecutive_periods_as_one:list')
>>> collapse_periods.value = ['true']
>>> manager.getControl('Save').click()
Now when we look at the section journal, we note that Tuesday B is gone:
>>> teacher.open('http://localhost/persons/frum/calendar/2005-09-06')
>>> teacher.getLink('Journal', index=1).click()
>>> teacher.getLink('Frum').click()
>>> printGradebookTable(teacher.contents)
+-----+------------+-----------+---------+---------+---------+---------+---------+---------+---------+---------+---------+----------+---------+---------+
| Nr. | First Name | Last Name | 06 | 07 A | 13 A | 14 A | 20 A | 21 A | 27 A | 28 A | Average | Absences | Tardies | Excused |
+-----+------------+-----------+---------+---------+---------+---------+---------+---------+---------+---------+---------+----------+---------+---------+
| 1 | Frum | Student | [_____] | [_____] | [_____] | [_____] | [_____] | [_____] | [_____] | [_____] | | | | |
| 2 | Grum | Student | [_____] | | | | | | | | | | | |
+-----+------------+-----------+---------+---------+---------+---------+---------+---------+---------+---------+---------+----------+---------+---------+
When we mark Frum as if he has skipped some lessons, we see that the view
accepts the data and returns it to us:
>>> cells = analyze.queryHTML('//table[@class="data"]//input[@type="text"]/@name', teacher.contents)
>>> for i in range(8):
... teacher.getControl(name=cells[i]).value = 'a'
>>> teacher.getControl('Update').click()
>>> printGradebookTable(teacher.contents)
+-----+------------+-----------+---------+---------+---------+---------+---------+---------+---------+---------+---------+----------+---------+---------+
| Nr. | First Name | Last Name | 06 | 07 A | 13 A | 14 A | 20 A | 21 A | 27 A | 28 A | Average | Absences | Tardies | Excused |
+-----+------------+-----------+---------+---------+---------+---------+---------+---------+---------+---------+---------+----------+---------+---------+
| 1 | Frum | Student | [a____] | [a____] | [a____] | [a____] | [a____] | [a____] | [a____] | [a____] | | 8 | | 8 / 0 |
| 2 | Grum | Student | [_____] | | | | | | | | | | | |
+-----+------------+-----------+---------+---------+---------+---------+---------+---------+---------+---------+---------+----------+---------+---------+
|