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

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

Remove handlers for the local roles updates (old method).

  • Property svn:keywords set to Id
File size: 3.1 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
[6815]23from zope.securitypolicy.interfaces import IPrincipalRoleManager
[6642]24from waeup.sirp.students.interfaces import (
[6774]25    IStudentStudyCourse, IStudentNavigation, IStudentStudyLevel)
[6782]26from waeup.sirp.students.studylevel import CourseTicket
[6633]27from waeup.sirp.utils.helpers import attrs_to_fields
28
29class StudentStudyCourse(grok.Container):
30    """This is a container for study levels.
31    """
[6642]32    grok.implements(IStudentStudyCourse, IStudentNavigation)
[6633]33    grok.provides(IStudentStudyCourse)
34
35    def __init__(self):
36        super(StudentStudyCourse, self).__init__()
37        return
38
[6642]39    def getStudent(self):
40        return self.__parent__
41
[6782]42    def addStudentStudyLevel(self, cert, studylevel):
[6774]43        """Add a study level object.
44        """
45        if not IStudentStudyLevel.providedBy(studylevel):
46            raise TypeError(
47                'StudentStudyCourses contain only IStudentStudyLevel instances')
[6775]48        self[str(studylevel.level)] = studylevel
[6782]49
50        #Create course tickets automatically
51        for key, val in cert.items():
[6791]52            if val.level != studylevel.level:
53                continue
[6795]54            ticket = CourseTicket()
55            ticket.code = val.getCourseCode()
[6802]56            ticket.automatic = True
[6795]57            ticket.core_or_elective = val.core_or_elective
58            ticket.title = val.course.title
59            ticket.faculty = val.course.__parent__.__parent__.__parent__.title
60            ticket.department = val.course.__parent__.__parent__.title
61            ticket.credits = val.course.credits
62            ticket.passmark = val.course.passmark
63            ticket.semester = val.course.semester
[6782]64            self[str(studylevel.level)][val.getCourseCode()] = ticket
[6774]65        return
66
[6815]67StudentStudyCourse = attrs_to_fields(StudentStudyCourse)
68
[6822]69class StudentStudyCourseFactory(grok.GlobalUtility):
70    """A factory for students.
71    """
72    grok.implements(IFactory)
73    grok.name(u'waeup.StudentStudyCourse')
74    title = u"Create a new student study course.",
75    description = u"This factory instantiates new student study course instances."
76
77    def __call__(self, *args, **kw):
78        return StudentStudyCourse()
79
80    def getInterfaces(self):
81        return implementedBy(StudentStudyCourse)
Note: See TracBrowser for help on using the repository browser.