source: main/waeup.sirp/trunk/src/waeup/sirp/university/interfaces.py @ 6635

Last change on this file since 6635 was 6633, checked in by Henrik Bettermann, 14 years ago

We don't need a factory for StudentsContainer?.

Add addStudent method which automatically creates subcontainers.

Add StudentStudyCourse? container class which holds the study course data and contains student study level objects for course registration.

File size: 6.6 KB
RevLine 
[5004]1"""Interfaces of academics specific objects.
2"""
3from zope import schema
4from zope.interface import Attribute
[5977]5from waeup.sirp.interfaces import (IWAeUPObject, IWAeUPContainer)
[6561]6
[5995]7from waeup.sirp.university.vocabularies import (
8    course_levels,
9    semester,
[6189]10    application_categories,
[5995]11    study_mode,
12    inst_types,
13    CourseSource,
14    )
[5004]15
[5995]16
[5004]17class IFaculty(IWAeUPContainer):
18    """Representation of a university faculty.
19    """
[5948]20    code = schema.TextLine(
21        title = u'Code',
22        default = u'NA',
23        required = True,
24        readonly = True,
25        )
26
[5004]27    title = schema.TextLine(
[6025]28        title = u'Name of faculty',
[5004]29        default = u'Unnamed',
30        required = True,
31        )
32
[5988]33    title_prefix = schema.Choice(
[6025]34        title = u'Name prefix',
[5004]35        default = u'faculty',
[5988]36        vocabulary = inst_types,
[5004]37        required = True,
38        )
[6561]39
[5988]40    def longtitle():
41        """
42        Returns the long title of a faculty.
[6561]43        """
44
[5951]45class IFacultyAdd(IFaculty):
46    """Representation of a university faculty.
47    """
48    code = schema.TextLine(
49        title = u'Code',
[6345]50        description = u'This code will become part of the URL.',
[5951]51        default = u'NA',
52        required = True,
53        readonly = False,
54        )
[6561]55
56IFacultyAdd['code'].order =  IFaculty['code'].order
57
[5004]58class IFacultyContainer(IWAeUPContainer):
59    """A container for faculties.
60    """
61    def addFaculty(faculty):
62        """Add an IFactulty object.
63
64        """
65class IDepartment(IWAeUPObject):
66    """Representation of a department.
67    """
[5948]68    code = schema.TextLine(
69        title = u'Code',
70        default = u'NA',
71        required = True,
72        readonly = True,
73        )
74
[5004]75    title = schema.TextLine(
[6025]76        title = u'Name of department',
[5004]77        default = u'Unnamed',
78        required = True,
79        )
80
[5988]81    title_prefix = schema.Choice(
[6025]82        title = u'Name prefix',
[5988]83        vocabulary = inst_types,
[5004]84        default = u'department',
85        required = True,
86        )
87
88    courses = Attribute("A container for courses.")
89    certificates = Attribute("A container for certificates.")
[6561]90
[5988]91    def longtitle():
92        """
93        Returns the long title of a department.
94        """
[6561]95
[5951]96class IDepartmentAdd(IDepartment):
97    """Representation of a university department.
98    """
99    code = schema.TextLine(
100        title = u'Code',
[6345]101        description = u'This code will become part of the URL.',
[5951]102        default = u'NA',
103        required = True,
104        readonly = False,
105        )
[5004]106
[6561]107IDepartmentAdd['code'].order =  IDepartment['code'].order
108
[5004]109class ICourseContainer(IWAeUPContainer):
110    """A container for faculties.
111    """
112    def addCourse(faculty):
113        """Add an ICourse object.
114
115        Returns the key, under which the object was stored.
116        """
117
118class ICourse(IWAeUPObject):
119    """Representation of a course.
120    """
121    code = schema.TextLine(
122        title = u'Code',
123        default = u'NA',
124        required = True,
125        readonly = True,
126        )
127
128    title = schema.TextLine(
129        title = u'Title of course',
130        default = u'Unnamed',
131        required = True,
132        )
133
134    credits = schema.Int(
135        title = u'Credits',
136        default = 0,
137        required = False,
138        )
[6561]139
[5004]140    passmark = schema.Int(
141        title = u'Passmark',
142        default = 40,
143        required = False,
144        )
145
146    semester = schema.Choice(
147        title = u'Semester/Term',
148        default = 0,
[5977]149        vocabulary = semester,
[5004]150        required = True,
151        )
[6561]152
[6008]153    def longtitle():
154        """
155        Returns the long title of a course.
[6561]156        """
[5004]157
[5951]158class ICourseAdd(ICourse):
159    """Representation of a course.
160    """
161    code = schema.TextLine(
162        title = u'Code',
[6345]163        description = u'Enter unique course code which will become part of the URL.',
[5951]164        default = u'NA',
165        required = True,
166        readonly = False,
167        )
[5004]168
[6561]169ICourseAdd['code'].order =  ICourse['code'].order
170
[5004]171class ICertificate(IWAeUPObject):
172    """Representation of a certificate.
173    """
174    code = schema.TextLine(
175        title = u'Code',
176        default = u'NA',
177        required = True,
[5948]178        readonly = True,
[5004]179        )
180
181    title = schema.TextLine(
[5948]182        title = u'Title',
[5951]183        default = u'Unnamed',
[5004]184        required = True,
185        )
186
[5986]187    study_mode = schema.Choice(
[5948]188        title = u'Study Mode',
[5986]189        vocabulary = study_mode,
[5951]190        default = u'ug_ft',
[5004]191        required = True,
192        )
193
[5977]194    start_level = schema.Choice(
[5948]195        title = u'Start Level',
[5977]196        vocabulary = course_levels,
197        default = 100,
[5004]198        required = True,
199        )
[6561]200
[5977]201    end_level = schema.Choice(
[5948]202        title = u'End Level',
[5977]203        vocabulary = course_levels,
204        default = 500,
[5004]205        required = True,
206        )
[6561]207
[5986]208    application_category = schema.Choice(
[5949]209        title = u'Application Category',
[6189]210        vocabulary = application_categories,
[5951]211        default = u'basic',
[5986]212        required = True,
[6561]213        )
[5004]214
[6008]215    def longtitle():
216        """
217        Returns the long title of a certificate.
[6561]218        """
[6008]219
[5951]220class ICertificateAdd(ICertificate):
221    """Representation of a certificate.
222    """
223    code = schema.TextLine(
224        title = u'Code',
225        default = u'NA',
[6345]226        description = u'Enter unique certificate code which will become part of the URL.',
[5951]227        required = True,
228        readonly = False,
229        )
[6561]230
231ICertificateAdd['code'].order =  ICertificate['code'].order
232
[5004]233class ICertificateContainer(IWAeUPContainer):
234    """A container for certificates.
235    """
236    def addCertificate(faculty):
237        """Add an ICertificate object.
238
239        Returns the key, under which the object was stored.
240        """
241
242class ICertificateCourse(IWAeUPObject):
[6561]243    """A certificatecourse is referring a course and provides some own
244       attributes.
[5004]245    """
246    course = schema.Choice(
[5977]247        title = u'Course referrer',
[5004]248        source = CourseSource(),
[5950]249        readonly = True,
[5004]250        )
[6561]251
[5977]252    level = schema.Choice(
[5951]253        title = u'Level',
[5004]254        required = True,
[5977]255        vocabulary = course_levels,
[5950]256        readonly = False,
[5004]257        )
258
259    core_or_elective = schema.Bool(
260        title = u'Is mandatory course (not elective)',
261        required = True,
[5950]262        default = True,
[5004]263        )
264
265    def getCourseCode():
[5977]266        """Return the code of the course referred to.
[5004]267
268        This is needed for cataloging.
269        """
[6561]270
[6008]271    def longtitle():
272        """
273        Returns the long title of a certificatecourse.
[6561]274        """
275
276
[5951]277class ICertificateCourseAdd(ICertificateCourse):
[6561]278    """A certificatecourse is referring a course and
[5951]279       provides some own attributes.
280    """
281    course = schema.Choice(
[5977]282        title = u'Course',
[5951]283        source = CourseSource(),
284        readonly = False,
285        )
[6561]286
287ICertificateCourseAdd['course'].order =  ICertificateCourse['course'].order
Note: See TracBrowser for help on using the repository browser.