source: main/waeup.kofa/trunk/docs/source/userdocs/students/browser.rst @ 13101

Last change on this file since 13101 was 13101, checked in by Henrik Bettermann, 9 years ago

More docs.

File size: 15.8 KB
Line 
1.. _logging_in_as_student:
2
3Impersonate Students
4====================
5
6Officers with
7:py:class:`LoginAsStudent<waeup.kofa.students.permissions.LoginAsStudent>`
8permission do see a 'Login as student' button on student display
9pages which redirects to a page, where a temporary student password
10can be set by clicking a 'Set password now' form button. The
11temporary password is valid for 10 minutes. During this period the
12student can't login. The officer is being redirected to a login page
13which allows to directly login as student with pre-filled temporary
14credentials. The second page is to avoid that officers must remember
15the student credentials, have to logout from their own account and
16manually login as student via the regular login page. After 10
17minutes the officer is automatically thrown out and the student is
18able to login again (if the officer hasn't changed the password).
19Attention: When logging in as student, the officer really
20impersonates the student. All actions are logged with the student id
21and not with the officer's user id. However, start of student
22impersonation is also logged, so that officers can be identified and
23fraudulent use can be discovered.
24
25
26.. _starting_clearance:
27
28Starting Clearance
29==================
30
31When students start the clearance process, Kofa checks if the
32passport picture has been uploaded and the email address field as
33well as the phone number field filled. If not, students can't
34proceed with clearance.
35
36
37.. _rejecting_clearance:
38
39Rejecting Clearance
40===================
41
42When a clearance officer clicks the 'Save comment and reject
43clearance now' button, the `reject` action method of the
44:py:class:`StudentRejectClearancePage<waeup.kofa.students.browser.StudentRejectClearancePage>`
45is called. This method first checks, in which workflow state the
46student is, and fires a transition accordingly. Then the comment,
47which should explain why the request was requested, is saved twice
48in the `officer_comment` attribute of the student and in
49``students.log``. As soon as the `clear` transition (d) is effected,
50an event handler clears the attribute again. The logfile message is
51permanent and ensures that the original cause of rejection can
52always be reconstructed.
53
54Finally, the method redirects to the `ContactStudentFormPage` and prefills
55the HTML form with the comment previously saved. The clearance
56officer can leave the comment as it is, or can modify the text to
57give more information about the reason of rejection. This comment
58will then be sent to the student by email. This comment is not saved,
59neither in the student object nor in the logfile.
60
61.. important::
62
63  All messages sent via Kofa contact forms are private. They are
64  neither stored in the database nor in any logfile. The emails are
65  also not forwarded to any other email address. Thus senders and
66  recipients can be sure that nobody else is eavesdropping and the
67  correspondence is kept secret.
68
69.. seealso::
70
71  :ref:`Clearance Handling Doctests <test_handle_clearance>`
72
73
74.. _clearance_form_locking:
75
76Clearance Form Locking
77======================
78
79
80
81
82
83
84.. _transferring_students:
85
86Student Transfer
87================
88
89Transferring a student means enabling the student to study another
90programme.
91
92The simple but dirty way is to select another certificate and adjust
93study course attributes accordingly. Existing study levels can be
94either removed or, in case registered courses can be credited, left
95as they are. This simple way is tedious and also dangerous, because
96changes are not tracable. Only the logfile can tell us, that an
97officer has edited the student's data. The data of the previous
98study course are not backed up. They are lost.
99
100Kofa provides a more adequate, cleaner and tracable way of
101transferring students. It can make a backup of the entire study
102course container and create a new and empty container for the new
103study programme with only one click or even by batch processing.
104
105After clicking the 'Transfer student' button the
106`StudentTransferFormPage` opens and asks for the new certificate,
107current session, current level and current verdict. After submitting
108this form, the student transfer method checks if the old study
109course is complete and ready for transfer. It also checks if the
110number of possible transfers is not exceeded. Kofa allows two (2)
111transfers! Finally the copying process is started and history and
112logfile messages are added.
113
114The old study course container(s) can still be accessed via links on
115the current study course display form page. But, they can neither be
116edited, removed, exported or reimported.
117
118
119Batch Transferring Students
120---------------------------
121
122Sometimes students of an entire study programme have to be
123transferred to another programme. This can be done with the
124:py:class:`StudentStudyCourseProcessor<waeup.kofa.students.batching.StudentStudyCourseProcessor>`.
125The import file must contain the following columns: `student_id`
126(or any other locator), `certificate`, `current_session`,
127`current_level` and `entry_mode`. Do not import `entry_session`. A
128transfer is automatically initialized if the `entry_mode` value is
129``transfer``.
130
131
132Reverting Previous Transfers
133----------------------------
134
135Previous transfers can be reverted by opening the previous study
136course and clicking the 'Reactivate this study course (revert
137previous transfer)' button. This is a complete rollback of the last
138transfer. The current study mode will be irrevocably deleted and
139replaced by the previous study course. The second last study course
140will become the previous study course.
141
142
143.. _student_payment_tickets:
144
145Payments
146========
147
148The `PaymentsManageFormPage` is used by both students and students
149officers. The page tabulates existing payment tickets and allows to
150add or remove tickets. Officers can remove all payment tickets,
151students only those without a response code (`r_code`). Attention:
152Students can remove tickets without response code even if they have
153been marked paid.
154
155There are three different add form pages to add
156`StudentOnlinePayment` instances (= payment tickets). They all
157create objects of the same type, only their attributes are set
158differently.
159
160
161Current Session Payment Tickets
162-------------------------------
163
164Current session payments are the regular payments which have to be
165made in each session to proceed to the next registration step. The
166add form provides a select box of available payment categories
167(`p_category`). After submitting the form, Kofa determines the total
168amount and sets attributes like payment item (`p_item`), payment
169session (`p_session`) and payment level (`p_level`) automatically.
170The Boolean `p_current` attribute is set ``True``. The creation
171datetime is stored in the `creation_date` attribute and is also used
172to construct the unique payment id (`p_id`).
173
174.. note::
175
176  Kofa always determines the total amount, including any fees charged
177  by the school and its service providers. This is the amount which is
178  authorized by students and finally submitted to one of the payment
179  gateways. No fees can be added once the payment ticket is created.
180  Payment tickets do not store any information about charged fees.
181
182
183Payment Ticket Redemption
184-------------------------
185
186Directly after a student payment ticket has been paid - either by
187approval by an officer or by receiving a positive response from a
188payment gateway - the
189:py:meth:`redeemTicket<waeup.kofa.students.payments.StudentOnlinePayment.redeemTicket>`
190method is called. Depending on the category of the payment, an
191appropriate access or activation code is beeing created for the
192owner of the ticket. This code must be entered on certain form pages
193to activate the paid service or to access the next stage of the
194registration process. In other words, making a payment and redeeming
195a payment are two different steps. Successful payments do not
196automatically trigger any action in the portal but create a specifc
197access code which can be used to trigger access-code-related actions
198(see :ref:`accesscodes`).
199
200Until May 2015 also school fee payments had produced access codes,
201which enabled students to start the next session. Since software
202revision 12889, Kofa bypasses SFE access code creation and starts
203the next session automatically.
204
205
206Previous Session Payment Tickets
207--------------------------------
208
209Previous session payments are additional payments which do not
210induce further actions in Kofa. Their sole purpose is to enable
211students to pay for services in previous sessions which they missed
212to pay. The add form for previous session payments allows the
213student to select the payment category, session and level by
214him/herself.
215
216
217Balance Payment Tickets
218-----------------------
219
220Balance payments have been introduced to correct previously made
221payments. In some cases, students select the wrong payment category,
222or other things may have happened which led students pay less than
223expected. This can be balanced by paying a differential amount.
224Therefore, the add form for balance payments allows to freely choose
225the total amount to be paid. It also asks for the category, the
226session and the level the payment is meant for. Like previous
227session payments, balance payments do not induce further actions in
228Kofa. Both can be omitted in customized versions of Kofa if these
229features are not needed.
230
231.. _course_registration:
232
233Course Registration
234===================
235
236Study levels are pre-filled with course tickets. When adding a study
237level,
238:py:meth:`StudentStudyCourse.addStudentStudyLevel<waeup.kofa.students.studycourse.StudentStudyCourse.addStudentStudyLevel>`
239automatically adds course tickets in two steps:
240
2411.  :py:meth:`StudentStudyLevel.addCertCourseTickets<waeup.kofa.students.studylevel.StudentStudyLevel.addCertCourseTickets>`
242    is called which iterates over the certificate courses of the
243    certificate container object in the academic section and creates
244    course tickets if the `level` attribute matches. `title`, `fcode`,
245    `dcode`, `credits`, `passmark` and `semester` are copied from the
246    course object which is attached to the certificate course;
247    `mandatory` is taken from the certificate course itself. Finally,
248    `automatic` is set to ``True`` and `carry_over` to ``False.``
249
2502.  The portal can be configured
251    (`IConfigurationContainer.carry_over`) such that failed courses are
252    automatically carried over from one session to the next. Failed
253    course tickets from the previous level, i.e. tickets with a score
254    below the passmark, are collected and 'copied' into the current
255    study level container. The attributes `automatic` and `carry_over`
256    are set to ``True``.
257
258In most cases such an automatically created course list is not
259perfect or even ready for submission to the course adviser. The list
260must be edited according to the student's needs. Students can select
261further courses, which they desire to attend, and can create
262additional course tickets, as long as the total number of credits do
263not exceed 50 (value customizable). Course tickets can also be
264removed. Whereas officers can remove any ticket from the list,
265students can remove only optional (non-mandatory) course tickets
266(condition customizable).
267
268The edit form page provides a 'Register course list' button which
269submits the course list to the course adviser for validation. If the
270course registration deadline
271(`ISessionConfiguration.coursereg_deadline`) is set and the
272registration period has expired, a late registration fee
273(`ISessionConfiguration.late_registration_fee`) is charged. This
274payment has to be made first, otherwise a warning message appears in
275the browser.
276
277Course advisers can't edit the registered/submitted course list, but
278they can validate or reject it by pressing the same-named link
279buttons. After pressing the 'Reject courses' button, Kofa redirects
280to the `ContactStudentFormPage` which can be used to inform the student
281about the reason of rejection. In contrast to clearance rejection,
282the message, which is being sent to the student by email, is neither
283stored in the database nor in the logfiles.
284
285.. seealso::
286
287  :ref:`Course List Validation Doctests <test_handle_courses>`
288
289
290.. _batch_editing_scores:
291
292Batch Editing Scores by Lecturers
293=================================
294
295Lecturers cannot access student records directly. They don't have
296access to the students section. Instead, lecturers go to their course
297in the academic section and view or export lists of students who
298attended the course, either in a previous or in the current session.
299They do also see an 'Update scores' link button which opens the
300`EditScoresPage` if score editing is enabled for that department
301(`IDepartment.score_editing_disabled`) and
302`IConfigurationContainer.current_academic_session` has been set on
303the portal's configuration page. The `EditScoresPage` lists all
304students, who are attending the course in the current academic
305session. Score editing is allowed if the student's current session
306corresponds with the current academic session and the student is in
307state 'courses validated', see method
308:py:meth:`CourseTicket.editable_by_lecturer<waeup.kofa.students.studylevel.CourseTicket.editable_by_lecturer>`.
309
310.. seealso::
311
312  :ref:`Batch Editing Scores Doctests <test_batch_editing_scores>`
313
314
315.. _bed_tickets:
316
317Bed Tickets
318===========
319
320Students can obtain a bed ticket if a series of conditions is met:
321
322- The current date must be inside the booking period (between
323  `IHostelsContainer.startdate` and `IHostelsContainer.enddate`).
324
325- The student's current session must match the accommodation session
326  (`IHostelsContainer.accommodation_session`).
327
328- A bed ticket for the same accommodation session does not exist.
329
330- The student must be in the correct workflow state
331  (`IHostelsContainer.accommodation_states`).
332
333- A bed type, which fits to the student, can be determined.
334
335- A bed of that type is available.
336
337- The HOS activation code is not yet used.
338
339- The student is the owner of the activation code.
340
341The customizable utility method
342:py:meth:`getAccommodationDetails<waeup.kofa.students.utils.StudentsUtils.getAccommodationDetails>`
343composes a bed type string. Three criteria are checked: Is the
344student a new, a returning or a final year student? Is the student
345female or male? Has the student to be accommodated in a special
346hostel (`IHostel.special_handling`)? The resulting bed type string
347contains these information. Example: ``regular_female_fr`` means
348that a bed for a new female student in a regular hostel is wanted.
349If the student record allows to determine such a bed string, Kofa
350starts searching a proper bed space.
351
352Before Kofa searches for a free bed space, which meets the bed type
353criteria above, it checks if a bed space has already been allocated
354manually to the student. If so, then this bed is used, no matter
355whether the bed meets the criteria or not. (Theoretically, a male
356student can be accommodated in a hostel which is reserved for female
357students.) If no manually allocated bed space is found, Kofa
358searches for the right space. If bed booking is subject to a charge,
359Kofa also checks, if the student has entered a valid activation code,
360before delivering the bed coordinates to the student.
361
362
363Relocation
364----------
365
366Officers with `ManageHostels` permission do see a 'Relocate student'
367link button which calls the `BedTicketRelocationView`. This view
368relocates the student if student parameters or the bed type of the
369bed have changed. The `update` method of this view checks first, if
370the student has a 'reserved' bed space. Students in reserved beds
371are never subject to relocation. It checks secondly, if booking has
372been cancelled in the accommodation section but other bed space has
373been manually allocated after cancellation. Then this bed is used,
374no matter whether the bed meets the bed type criteria or not. If
375both checks are negative, Kofa searches for a free bed space, which
376meets the student's bed type criteria. Only if it finds a new and
377free bed space, it starts the relocation process by releasing the
378old bed, booking the new bed and designating the new bed in the bed
379ticket.
380
381.. seealso::
382
383  :ref:`Bed Space Booking Doctests <test_handle_accommodation>`
Note: See TracBrowser for help on using the repository browser.