Ignore:
Timestamp:
22 Feb 2022, 12:48:36 (3 years ago)
Author:
Henrik Bettermann
Message:

Add exporters for previous study course data.

File:
1 edited

Legend:

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

    r16812 r16827  
    4141    return stud_filter.query()
    4242
    43 def get_studycourses(students):
     43def get_studycourses(students, previous=0):
    4444    """Get studycourses of `students`.
    4545    """
    46     return [x.get('studycourse', None) for x in students
    47             if x is not None]
    48 
    49 def get_levels(students, **kw):
     46    studycourse = 'studycourse'
     47    if previous == 1:
     48        studycourse = 'studycourse_1'
     49    elif previous == 2:
     50        studycourse = 'studycourse_2'
     51    for x in students:
     52        if x.get(studycourse, None) is None:
     53            continue
     54        yield x.get(studycourse, None)
     55
     56def get_levels(students, previous=0, **kw):
    5057    """Get all studylevels of `students`.
    5158    """
    5259    levels = []
    5360    level_session = kw.get('level_session', None)
    54     for course in get_studycourses(students):
     61    for course in get_studycourses(students, previous):
    5562        for level in course.values():
    5663            if level_session not in ('all', None) and \
     
    6067    return levels
    6168
    62 def get_tickets(students, **kw):
     69def get_tickets(students, previous=0, **kw):
    6370    """Get course tickets of `students`.
    6471    If code is passed through, filter course tickets
     
    7885    ct_semester = kw.get('ct_semester', None)
    7986    if code is None:
    80         for level_obj in get_levels(students, **kw):
     87        for level_obj in get_levels(students, previous, **kw):
    8188            for ticket in level_obj.values():
    8289                if ct_level not in ('all', None):
     
    95102                tickets.append(ticket)
    96103    else:
    97         for level_obj in get_levels(students, **kw):
     104        for level_obj in get_levels(students, previous, **kw):
    98105            for ticket in level_obj.values():
    99106                if ticket.code != code:
     
    112119    return tickets
    113120
    114 def get_tickets_for_lecturer(students, **kw):
     121def get_tickets_for_lecturer(students, previous=0, **kw):
    115122    """Get course tickets of `students`.
    116123    Filter course tickets which belong to this course code and
     
    122129    level_session = kw.get('session', None)
    123130    level = kw.get('level', None)
    124     for level_obj in get_levels(students, **kw):
     131    for level_obj in get_levels(students, previous, **kw):
    125132        for ticket in level_obj.values():
    126133            if ticket.code != code:
     
    428435            value, name, context=context)
    429436
     437class FirstStudentStudyCourseExporter(StudentStudyCourseExporter):
     438    """The First Student Study Course Exporter exports the first
     439    study course if student was transferred.
     440    """
     441    grok.name('studentstudycourses_1')
     442
     443    title = _(u'First Student Study Courses (Data Backup)')
     444
     445    def filter_func(self, x, **kw):
     446        return get_studycourses(x, 1)
     447
     448class SecondStudentStudyCourseExporter(StudentStudyCourseExporter):
     449    """The Second Student Study Course Exporter exports the second
     450    study course if student was transferred twice.
     451    """
     452    grok.name('studentstudycourses_2')
     453
     454    title = _(u'Second Student Study Courses (Data Backup)')
     455
     456    def filter_func(self, x, **kw):
     457        return get_studycourses(x, 2)
    430458
    431459class StudentStudyLevelExporter(grok.GlobalUtility, StudentExporterBase):
     
    456484            value, name, context=context)
    457485
     486class FirstStudentStudyLevelExporter(StudentStudyLevelExporter):
     487    """The First Student Study Level Exporter exports study levels of the
     488    first study course if the student was transferred.
     489    """
     490    grok.name('studentstudylevels_1')
     491
     492    title = _(u'First Course Student Study Levels (Data Backup)')
     493
     494    def filter_func(self, x, **kw):
     495        return get_levels(x, 1, **kw)
     496
     497class SecondStudentStudyLevelExporter(StudentStudyLevelExporter):
     498    """The Second Student Study Level Exporter exports study levels of the
     499    second tudy course if the student was transferred twice.
     500    """
     501    grok.name('studentstudylevels_2')
     502
     503    title = _(u'Second Course Student Study Levels (Data Backup)')
     504
     505    def filter_func(self, x, **kw):
     506        return get_levels(x, 2, **kw)
     507
    458508class CourseTicketExporter(grok.GlobalUtility, StudentExporterBase):
    459509    """The Course Ticket Exporter exports course tickets. Usually,
     
    490540            CourseTicketExporter, self).mangle_value(
    491541            value, name, context=context)
     542
     543class FirstCourseTicketExporter(CourseTicketExporter):
     544    """The First Course Ticket Exporter exports course tickets of
     545    first study courses if the student was transferred.
     546    """
     547    grok.name('coursetickets_1')
     548
     549    title = _(u'First Course Course Tickets (Data Backup)')
     550
     551    def filter_func(self, x, **kw):
     552        return get_tickets(x, 1, **kw)
     553
     554class SecondCourseTicketExporter(CourseTicketExporter):
     555    """The Second Course Ticket Exporter exports course tickets of
     556    second study courses if the student was transferred twice.
     557    """
     558    grok.name('coursetickets_2')
     559
     560    title = _(u'Second Course Course Tickets (Data Backup)')
     561
     562    def filter_func(self, x, **kw):
     563        return get_tickets(x, 2, **kw)
    492564
    493565class StudentPaymentExporter(grok.GlobalUtility, StudentExporterBase):
Note: See TracChangeset for help on using the changeset viewer.