source: WAeUP_SRP/trunk/skins/waeup_futminna/getStudentLevelsVoc.py @ 17389

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

Change of functional specification: All students (except those in level 100) should be able to register 100L carryover courses.

  • Property svn:keywords set to Id
File size: 1.8 KB
Line 
1##parameters=key=None
2# $Id: getStudentLevelsVoc.py 6862 2011-10-05 06:39:58Z henrik $
3"""
4Return the levels as an vocabulary
5"""
6student_id = context.getStudentId()
7end_level = 800
8if student_id:
9    end_level = context.students_catalog(id = student_id)[0].end_level
10    if end_level and end_level.isdigit():
11        end_level = int(end_level)
12    else:
13        end_level = 700
14
15if key is None:
16    levels = [l for l in range(0,end_level+200,10)
17               if l % 100 < 30 and l < end_level + 120]
18    voc = [('','')]
19    for l in levels:
20        level_nr,repeat = divmod(l, 100)
21        if level_nr > end_level/100 and repeat:
22            voc += ("%s" % l,"%s (2nd spillover)" % context.portal_vocabularies.levels.get("%d00" % (level_nr - 1))),
23        elif level_nr > end_level/100:
24            voc += ("%s" % l,"%s (spillover)" % context.portal_vocabularies.levels.get("%d00" % (level_nr - 1))),
25        elif repeat > 0:
26            voc += ("%s" % l,"%s (on %d. probation)" %
27                    (context.portal_vocabularies.levels.get("%d00" % (level_nr)),
28                                                            (repeat // 10))),
29        else:
30            voc += ("%03d" % l,"%s" %
31                    (context.portal_vocabularies.levels.get("%d00" % (level_nr)))),
32    return voc
33
34if key and key.isdigit():
35    ikey = int(key)
36else:
37    raise KeyError
38
39# FUTMinna only
40if ikey == 101:
41    return "100 Level Carryover Courses"
42
43level_nr,repeat = divmod(ikey, 100)
44l = []
45
46level = context.portal_vocabularies.levels.get("%d00" % level_nr,None)
47if level is None:
48    raise KeyError
49   
50if level_nr > end_level/100 and repeat:   
51    return "%s 2nd Spillover" % context.portal_vocabularies.levels.get("%d00" % (level_nr - 1))
52elif level_nr > end_level/100:
53    return "%s Spillover" % context.portal_vocabularies.levels.get("%d00" % (level_nr - 1))
54
55if repeat > 0:
56    level += " on %d. Probation" % (repeat // 10)
57
58return level
59
Note: See TracBrowser for help on using the repository browser.