source: main/waeup.sirp/trunk/src/waeup/sirp/students/studycourse.py @ 6809

Last change on this file since 6809 was 6802, checked in by Henrik Bettermann, 13 years ago

We don't need to store the level of a course ticket but a boolean value if the ticket has been created automatically (due creation of the entire course list) or manually.

  • Property svn:keywords set to Id
File size: 2.6 KB
RevLine 
[6633]1## Copyright (C) 2011 Uli Fouquet & Henrik Bettermann
2## This program is free software; you can redistribute it and/or modify
3## it under the terms of the GNU General Public License as published by
4## the Free Software Foundation; either version 2 of the License, or
5## (at your option) any later version.
6##
7## This program is distributed in the hope that it will be useful,
8## but WITHOUT ANY WARRANTY; without even the implied warranty of
9## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
10## GNU General Public License for more details.
11##
12## You should have received a copy of the GNU General Public License
13## along with this program; if not, write to the Free Software
14## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
15##
16"""
17Container which holds the data of the student study courses
18and contains the (student) study level objects.
19"""
20import grok
21from grok import index
22from zope.component.interfaces import IFactory
[6642]23from waeup.sirp.students.interfaces import (
[6774]24    IStudentStudyCourse, IStudentNavigation, IStudentStudyLevel)
[6782]25from waeup.sirp.students.studylevel import CourseTicket
[6633]26from waeup.sirp.utils.helpers import attrs_to_fields
27
28class StudentStudyCourse(grok.Container):
29    """This is a container for study levels.
30    """
[6642]31    grok.implements(IStudentStudyCourse, IStudentNavigation)
[6633]32    grok.provides(IStudentStudyCourse)
33
34    def __init__(self):
35        super(StudentStudyCourse, self).__init__()
36        return
37
[6642]38    def getStudent(self):
39        return self.__parent__
40
[6782]41    def addStudentStudyLevel(self, cert, studylevel):
[6774]42        """Add a study level object.
43        """
44        if not IStudentStudyLevel.providedBy(studylevel):
45            raise TypeError(
46                'StudentStudyCourses contain only IStudentStudyLevel instances')
[6775]47        self[str(studylevel.level)] = studylevel
[6782]48
49        #Create course tickets automatically
50        for key, val in cert.items():
[6791]51            if val.level != studylevel.level:
52                continue
[6795]53            ticket = CourseTicket()
54            ticket.code = val.getCourseCode()
[6802]55            ticket.automatic = True
[6795]56            ticket.core_or_elective = val.core_or_elective
57            ticket.title = val.course.title
58            ticket.faculty = val.course.__parent__.__parent__.__parent__.title
59            ticket.department = val.course.__parent__.__parent__.title
60            ticket.credits = val.course.credits
61            ticket.passmark = val.course.passmark
62            ticket.semester = val.course.semester
[6782]63            self[str(studylevel.level)][val.getCourseCode()] = ticket
[6774]64        return
65
[6633]66StudentStudyCourse = attrs_to_fields(StudentStudyCourse)
Note: See TracBrowser for help on using the repository browser.