source: main/waeup.uniben/trunk/src/waeup/uniben/students/studycourse.py @ 9742

Last change on this file since 9742 was 9360, checked in by Henrik Bettermann, 12 years ago

CustomStudentStudyCourse? should inherit from NigeriaStudentStudyCourse?.

  • Property svn:keywords set to Id
File size: 3.2 KB
Line 
1## $Id: studycourse.py 9360 2012-10-19 16:30:11Z henrik $
2##
3## Copyright (C) 2012 Uli Fouquet & Henrik Bettermann
4## This program is free software; you can redistribute it and/or modify
5## it under the terms of the GNU General Public License as published by
6## the Free Software Foundation; either version 2 of the License, or
7## (at your option) any later version.
8##
9## This program is distributed in the hope that it will be useful,
10## but WITHOUT ANY WARRANTY; without even the implied warranty of
11## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12## GNU General Public License for more details.
13##
14## You should have received a copy of the GNU General Public License
15## along with this program; if not, write to the Free Software
16## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17##
18"""
19Container which holds the data of the student study courses
20and contains the (student) study level objects.
21"""
22import grok
23from zope.interface import implementedBy
24from waeup.kofa.students.studycourse import StudentStudyCourseFactory
25from waeup.kofa.utils.helpers import attrs_to_fields
26from waeup.kofa.students.interfaces import IStudentNavigation
27from waeup.kofa.students.workflow import CLEARED, RETURNING, PAID
28from kofacustom.nigeria.students.studycourse import NigeriaStudentStudyCourse
29from waeup.uniben.students.interfaces import ICustomStudentStudyCourse
30
31class CustomStudentStudyCourse(NigeriaStudentStudyCourse):
32    """This is a container for study levels.
33    """
34    grok.implements(ICustomStudentStudyCourse, IStudentNavigation)
35    grok.provides(ICustomStudentStudyCourse)
36
37    @property
38    def is_postgrad(self):
39        if self.certificate is None:
40            return False
41        return self.certificate.study_mode.startswith('pg') or \
42            self.certificate.study_mode.startswith('special_pg')
43
44    @property
45    def is_special_postgrad(self):
46        if self.certificate is None:
47            return False
48        return self.certificate.study_mode.startswith('special_pg')
49
50    @property
51    def next_session_allowed(self):
52        state = self.student.state
53        certificate = getattr(self, 'certificate', None)
54        if certificate == None:
55            return False
56        if state == CLEARED:
57            return True
58        cond0 = state == RETURNING
59        cond1 = self.current_verdict in (
60            'A','B','C','F','J','L','M','N','O','X','Z')
61        cond2 = self.current_level in (0, 100)
62        cond3 = certificate.study_mode.startswith('de') and \
63            self.current_level == 200
64        cond4 = certificate.study_mode.startswith('ph') and \
65            self.current_level == 300
66        if cond0 and (cond1 or cond2 or cond3 or cond4):
67            return True
68        cond5 = self.is_postgrad
69        cond6 = state == PAID
70        cond7 = self.is_special_postgrad
71        if  cond5 and cond6 and not cond7:
72            return True
73        return False
74
75CustomStudentStudyCourse = attrs_to_fields(CustomStudentStudyCourse)
76
77class CustomStudentStudyCourseFactory(StudentStudyCourseFactory):
78    """A factory for student study courses.
79    """
80
81    def __call__(self, *args, **kw):
82        return CustomStudentStudyCourse()
83
84    def getInterfaces(self):
85        return implementedBy(CustomStudentStudyCourse)
Note: See TracBrowser for help on using the repository browser.