source: main/waeup.kofa/trunk/docs/source/userdocs/applicants/browser.rst @ 13106

Last change on this file since 13106 was 13104, checked in by Henrik Bettermann, 10 years ago

More docs.

File size: 8.0 KB
Line 
1.. _applicant_registration:
2
3Registration
4============
5
6The `ApplicantRegistrationPage` allows to register in create or in
7update mode, depending on the
8:ref:`mode of its context<application_mode>`, i.e. the applicants
9container.
10
11In create mode, `firstname`, `middlename`, `lastname`, `email` and
12`phone` are requested. A new record is being created.
13
14In update mode, only `reg_number`, `lastname` and `email` have to be
15entered. Kofa searches for an applicant record with matching
16registration number and lowercased lastname. If the search does not
17yield a result, the flash message: 'No application record found' is
18returned. The anonymous user will not know, if the registration
19number does not exist or the provided lastname does not match.
20Another ``if`` statement checks whether the password has already
21been set and used, i.e. the the application has already been
22started. If so, the anonymous user can't register again and is being
23requested to proceed to the login page.
24
25In both registration modes a randomly generated password is set and
26the email address is saved. An email with login credentials is sent
27to this address. Finally, the browser is redirected to a landing
28page. Depending on the portals configuration, the landing page tells
29the user that an email has been send to her/his mailbox, or even
30discloses additionally the login credentials. The disclosure of
31credentials has two substantial drawbacks: (1) The login credentials
32can be misused by web crawlers for bulk account creation, which may
33cause the system to crash. (2) The email address provided by the
34user is not being verified and there is no guarantee that the
35address belongs to the user or that a mailbox with such an address
36exists. Therefore, we strongly recommend to only send credentials to
37email addresses.
38
39
40.. _application_form_locking:
41
42Form Locking
43============
44
45We mentioned regular :ref:`page_locking` mechanisms. The
46`ApplicantEditFormPage` has two additional locks. One is the same
47named applicant attribute `locked`. Applicants can only enter the
48edit page if their record is 'unlocked'. Locking and unlocking is
49automatically done by workflow event handlers. By default, the
50record is unlocked. Only when the applicant submits the record, it
51is being locked, which means the attribute is set ``True`` and the
52data can no longer be edited.
53
54The reader may wonder why Kofa is not using the workflow state
55instead. The additional locking mechanism allows officers to unlock
56and lock forms without triggering workflow transitions. A transition
57is always a major, and sometimes inappropriate intervention which is
58also recorded in the application history.
59
60Use case: An applicant has made a mistake and requests a change of
61submitted data. An officer accepts the change, temporarily unlocks
62the form to allow editing the data. Unlocking and re-locking is
63logged in ``applicants.log`` but not shown on pages or the
64application slip.
65
66The second lock is induced by the application deadline. If the
67application period has expired and the applicants container's
68`strict_deadline` attribute is set, the applicant is also not
69allowed to edit or even submit the form.
70
71.. note::
72
73  A locked-out applicant can still login and access the display pages
74  of the recod and also download payment and application slips. To
75  expell an applicant from the portal, the account has to be suspended
76  by setting the same-named attribute.
77
78
79.. _applicant_payment_tickets:
80
81Payment
82=======
83
84In contrast to the students section, there is no
85`PaymentsManageFormPage` to handle payment tickets separately.
86Payment tickets can be viewed, added and removed directly on the
87applicant manage and edit form pages. Officers can remove all
88payment tickets, applicants only those without a response code
89(`r_code`) and, if the form is unlocked, so that they are allowed to
90edit their data.
91
92As already mentioned in the workflow chapter, making a payment and
93redeeming a payment is done in one step. When the payment was
94successful or has been approved, also the applicant is automatically
95set to state ``paid``. There is no need to redeem the ticket
96manually.
97
98
99.. _creating_students:
100
101Creating Student Records
102========================
103
104As brought up in the :ref:`application_workflow` chapter, the final
105step of the application process is the creation of the student
106record on the basis of the application data. Only applicants in
107state ``admitted`` can be turned into students. This is possible at
108various application section levels:
109
1101. Officers can create student records from single applicant
111   records. A link button appears on the display page of each admitted
112   applicants which directly triggers the creation process:
113
114  |create_student_button|
115
1162. The `ApplicantsContainerManageFormPage` provides a form button
117   which allows to create student records from above selected
118   applicants:
119
120  |create_selected_students_button|
121
122  Only admitted applicants will be processed. Other selected
123  applicants will be skipped without further notice
124
1253. Last but not least, the portal manager with user id ``admin``
126   does see a link buttons:
127
128  |create_students_button|
129
130  on the `ApplicantsContainerPage` and on the `ApplicantsRootPage`
131  which creates student records from applicants inside a single
132  applicants container or even portal-wide respectively.
133
134  The reader may wonder: Why only user ``admin``?
135
136  Batch creation of thousands or even tenthousands of student records
137  is very computation intensive and takes quite a long time, even with
138  powerful computers. Experience has shown that the portal must be
139  disconnected from the Internet in order to avoid database write
140  conflict errors, which cannot be resolved if also students access
141  the portal. Usually conflict errrors are not serious. Unresolved
142  conflicts just lead to an error message and the database remains
143  unchanged. Unfortunataly, student creation does not only alter the
144  object database. As we will see below, also folders and files in the
145  filesystem are added. These filesystem changes are not being
146  reverted after unresolved conflicts, a fact which can cause serious
147  problems.
148
149  So the answer to the question is trivial: We expect that the admin
150  user knows what s/he is doing and is careful enough to start the
151  creation process in maintenance mode, which means when the portal is
152  disconnected from a public network.
153
154
155
156.. |create_student_button| image:: create_student_button.png
157   :scale: 50 %
158
159.. |create_students_button| image:: create_students_button.png
160   :scale: 50 %
161
162.. |create_selected_students_button| image:: create_selected_students_button.png
163   :scale: 50 %
164
165`Applicant.createStudent`
166-------------------------
167
168The `createStudent` method is called for each admitted applicant.
169The method performs a series of checks before it creates a new
170student record:
171
1721. Is the applicant really in the correct state?
173
1742. Has the registration number not been assigned to another student?
175
1763. Is a certificate (`course_admitted`) provided?
177
1784. Can all required student attributes be copied and set? The
179   following attributes are copied:
180
181   .. autoattribute:: waeup.kofa.applicants.applicant.Applicant.applicant_student_mapping
182      :noindex:
183
1845. Can the application slip can be created? Defective images may
185   cause the adapter method to raise an exception (``IOError``).
186
187If all these checks are passed, a new student record is created, a
188password is set, the transitions ``create`` and ``admit`` are fired
189and all student study course attributes are set. These are the
190changes which affect the database.
191
192Furthermore, `createStudent` also produces an application slip pdf
193file, creates a new folder for the student in the filesystem and
194copies the pdf file together with the passport jpeg image file into
195the newly created folder. The copied application slip ensures, that
196the original application data do not get lost, when the application
197section is being purged.
198
199As mentioned above, folder creation and file copying are not being
200rolled back if the database transactions fails, e.g. due to write
201conflict errors. Therefore, batch student creation should only be
202performed if the portal is offline.
Note: See TracBrowser for help on using the repository browser.