Ignore:
Timestamp:
17 Apr 2015, 14:43:42 (10 years ago)
Author:
Henrik Bettermann
Message:

More documentation.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • main/waeup.kofa/trunk/src/waeup/kofa/students/export.py

    r12568 r12861  
    5656def get_tickets(students, **kw):
    5757    """Get course tickets of `students`.
    58 
    5958    If code is passed through, filter course tickets
    6059    which belong to this course code and meets level
     
    8988def get_payments(students, paid=False, **kw):
    9089    """Get all payments of `students` within given payment_date period.
    91 
    9290    """
    9391    date_format = '%d/%m/%Y'
     
    146144class StudentExporterBase(ExporterBase):
    147145    """Exporter for students or related objects.
    148 
    149146    This is a baseclass.
    150147    """
     
    158155    def get_filtered(self, site, **kw):
    159156        """Get students from a catalog filtered by keywords.
    160 
    161157        students_catalog is the default catalog. The keys must be valid
    162158        catalog index names.
     
    192188    def get_selected(self, site, selected):
    193189        """Get set of selected students.
    194 
    195190        Returns a simple empty list or a list with `Student`
    196191        objects.
     
    206201    def export(self, values, filepath=None):
    207202        """Export `values`, an iterable, as CSV file.
    208 
    209203        If `filepath` is ``None``, a raw string with CSV data is returned.
    210204        """
     
    216210    def export_all(self, site, filepath=None):
    217211        """Export students into filepath as CSV data.
    218 
    219212        If `filepath` is ``None``, a raw string with CSV data is returned.
    220213        """
     
    226219    def export_filtered(self, site, filepath=None, **kw):
    227220        """Export items denoted by `kw`.
    228 
    229221        If `filepath` is ``None``, a raw string with CSV data should
    230222        be returned.
     
    242234
    243235class StudentExporter(grok.GlobalUtility, StudentExporterBase):
    244     """Exporter for Students.
     236    """The Student Exporter first filters the set of students by searching the
     237    students catalog. Then it exports student base data of this set of students.
    245238    """
    246239    grok.name('students')
    247240
    248     #: Fieldnames considered by this exporter
    249241    fields = tuple(sorted(iface_names(IStudent))) + (
    250242        'password', 'state', 'history', 'certcode', 'is_postgrad',
    251243        'current_level', 'current_session')
    252 
    253     #: The title under which this exporter will be displayed
    254244    title = _(u'Students')
    255245
    256246    def mangle_value(self, value, name, context=None):
     247        """The mangler prepares the history messages and adds a hash symbol at
     248        the end of the phone number to avoid annoying automatic number
     249        transformation by Excel or Calc."""
    257250        if name == 'history':
    258251            value = value.messages
     
    267260
    268261class StudentStudyCourseExporter(grok.GlobalUtility, StudentExporterBase):
    269     """Exporter for StudentStudyCourses.
     262    """The Student Study Course Exporter first filters the set of students
     263    by searching the students catalog. Then it exports the data of the current
     264    study course container of each student from this set. It does
     265    not export their content.
    270266    """
    271267    grok.name('studentstudycourses')
    272268
    273     #: Fieldnames considered by this exporter
    274269    fields = tuple(sorted(iface_names(IStudentStudyCourse))) + ('student_id',)
    275 
    276     #: The title under which this exporter will be displayed
    277270    title = _(u'Student Study Courses')
    278271
     
    281274
    282275    def mangle_value(self, value, name, context=None):
    283         """Treat location values special.
     276        """The mangler determines the certificate code and the student id.
    284277        """
    285278        if name == 'certificate' and value is not None:
     
    295288
    296289class StudentStudyLevelExporter(grok.GlobalUtility, StudentExporterBase):
    297     """Exporter for StudentStudyLevels.
     290    """The Student Study Level Exporter first filters the set of students
     291    by searching the students catalog. Then it exports the data of the student's
     292    study level containers but not their content (course tickets).
     293    The exporter iterates over all objects in the students' ``studycourse``
     294    containers.
    298295    """
    299296    grok.name('studentstudylevels')
    300297
    301     #: Fieldnames considered by this exporter
    302298    fields = tuple(sorted(iface_names(
    303299        IStudentStudyLevel) + ['level'])) + (
    304300        'student_id', 'number_of_tickets','certcode')
    305 
    306     #: The title under which this exporter will be displayed
    307301    title = _(u'Student Study Levels')
    308302
     
    311305
    312306    def mangle_value(self, value, name, context=None):
    313         """Treat location values special.
     307        """The mangler determines the student id, nothing else.
    314308        """
    315309        if name == 'student_id' and context is not None:
     
    321315
    322316class CourseTicketExporter(grok.GlobalUtility, StudentExporterBase):
    323     """Exporter for CourseTickets.
     317    """The Course Ticket  Exporter exports course tickets. Usually,
     318    the exporter first filters the set of students by searching the
     319    students catalog. Then it collects and iterates over all ``studylevel``
     320    containers of the filtered student set and finally
     321    iterates over all items inside these containers.
     322
     323    If the course code is passed through, the exporter uses a different
     324    catalog. It searches for students in the course tickets catalog and
     325    exports those course tickets which belong to the given course code and
     326    also meet level and level_session passed through at the same time.
     327    This happens if the exporter is called at course level in the academics
     328    section.
    324329    """
    325330    grok.name('coursetickets')
    326331
    327     #: Fieldnames considered by this exporter
    328332    fields = tuple(sorted(iface_names(ICourseTicket) +
    329333        ['level', 'code', 'level_session'])) + ('student_id',
    330334        'certcode', 'display_fullname')
    331 
    332     #: The title under which this exporter will be displayed
    333335    title = _(u'Course Tickets')
    334336
     
    337339
    338340    def mangle_value(self, value, name, context=None):
    339         """Treat location values special.
     341        """The mangler determines the student's id and fullname.
    340342        """
    341343        if context is not None:
     
    343345            if name in ('student_id', 'display_fullname') and student is not None:
    344346                value = getattr(student, name, None)
    345             #if name == 'level':
    346             #    value = getattr(context, 'level', lambda: None)
    347             #if name == 'level_session':
    348             #    value = getattr(context, 'level_session', lambda: None)
    349347        return super(
    350348            CourseTicketExporter, self).mangle_value(
Note: See TracChangeset for help on using the changeset viewer.