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

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

Add StudentUnpaidPaymentExporter? to export only unpaid tickets. This exporter is designed for finding and finally purging outdated payment ticket.

File size: 3.5 KB
Line 
1.. _student_section:
2
3Student Section :sup:`in progress`
4**********************************
5
6'Student' is a multi-purpose term in Kofa which may lead to some misconceptions. First of all 'Student' is a Python/Grok container class and student objects are the instances of this class. Sometimes we are sluggish when talking about 'creating students' and actually mean: 'creating student container objects and storing the objects (persistently) in the ``students`` container'. The latter is the parent container for all students in the portal.
7
8The :ref:`treelike storage of objects <object_database>` in the student section can be figured as follows::
9
10
11  Student Section (StudentsContainer)
12  |
13  +---> Student
14        |
15        +---> StudentStudyCourse
16        |     |
17        |     +-----> StudentStudyLevel
18        |             |
19        |             +-----> CourseTicket
20        |
21        +---> StudentPaymentsContainer
22        |     |
23        |     +-----> StudentOnlinePayment
24        |
25        +---> StudentAccommodation
26              |
27              +-----> BedTicket
28
29
30.. note::
31
32  Throughout Kofa we distinguish singular and plural expressions. A students container contains students (or more precisely student containers), a payments container contains payments, a courses container contains courses, a certificates container contains certificates.
33
34Furthermore, a student is also a user of the portal and the student object is a user account surrogate, see :ref:`Applicants and Students <applicants_and_students>`. In the following we always refer to the student container when talking about a student.
35
36Students
37========
38
39The `Student` class is a container class which means, there are not only attributes describing the student but also content. Each student container contains exactly three sub-containers: ``studycourse``  (instance of `StudentStudyCourse`), ``payments`` (instance of `StudentPaymentsContainer`)  ``accommodation`` (instance of `StudentAccommodation`). The purposes of them are described further below.
40
41Let's talk about the attributes and methods belonging to the `Student` class, the so-called 'external behaviour' of student objects specified in Zope 'interfaces'. The data stored with each student object are subdivided into three parts: base data, personal data and clearance data. Each part has its own interface.
42
43.. note::
44
45  Interfaces are one of the pillars of Zope's Component Architecture (ZCA, see also :ref:`prerequisites`). They document the 'external behaviour' of objects. In Kofa interfaces are used to specify the attributes, methods and schema fields of objects. The first two are well-known Python concepts. A Zope schema field is a bit more complicated. It's a detailed description of a field to be submitted via forms to the server, or which is processed by a batch processor. In both cases the input data are being validated against the schema. In Kofa, schema fields in interfaces are also used to automtically add `FieldProperty` attributes of the same name to most content classes. This is done by a function called :py:func:`attrs_to_fields<waeup.kofa.utils.helpers.attrs_to_fields>`. These class attributes ensure that corresponding attributes of instances of this class - when being added or changed - always meet the requirements of the schema. Another big advantage of such class attributes is, that attributes with a `FieldProperty` do not need to be set in `__init__` methods.
46
47
48Student Study Courses
49=====================
50
51Student Study Levels
52--------------------
53
54Student Payments
55================
56
57Student Accommodation
58=====================
Note: See TracBrowser for help on using the repository browser.