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

Last change on this file since 7190 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
Line 
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
23from zope.securitypolicy.interfaces import IPrincipalRoleManager
24from waeup.sirp.students.interfaces import (
25    IStudentStudyCourse, IStudentNavigation, IStudentStudyLevel)
26from waeup.sirp.students.studylevel import CourseTicket
27from waeup.sirp.utils.helpers import attrs_to_fields
28
29class StudentStudyCourse(grok.Container):
30    """This is a container for study levels.
31    """
32    grok.implements(IStudentStudyCourse, IStudentNavigation)
33    grok.provides(IStudentStudyCourse)
34
35    def __init__(self):
36        super(StudentStudyCourse, self).__init__()
37        return
38
39    def getStudent(self):
40        return self.__parent__
41
42    def addStudentStudyLevel(self, cert, studylevel):
43        """Add a study level object.
44        """
45        if not IStudentStudyLevel.providedBy(studylevel):
46            raise TypeError(
47                'StudentStudyCourses contain only IStudentStudyLevel instances')
48        self[str(studylevel.level)] = studylevel
49
50        #Create course tickets automatically
51        for key, val in cert.items():
52            if val.level != studylevel.level:
53                continue
54            ticket = CourseTicket()
55            ticket.code = val.getCourseCode()
56            ticket.automatic = True
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
64            self[str(studylevel.level)][val.getCourseCode()] = ticket
65        return
66
67StudentStudyCourse = attrs_to_fields(StudentStudyCourse)
68
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.