[2632] | 1 | ##parameters=key=None |
---|
| 2 | # $Id: getStudentLevelsVoc.py 3254 2008-02-28 13:06:20Z joachim $ |
---|
| 3 | """ |
---|
| 4 | Return the levels as an vocabulary |
---|
| 5 | """ |
---|
[2641] | 6 | student_id = context.getStudentId() |
---|
[2650] | 7 | end_level = 700 |
---|
[2641] | 8 | if student_id: |
---|
[2650] | 9 | end_level = context.students_catalog(id = student_id)[0].end_level |
---|
[2655] | 10 | if end_level and end_level.isdigit(): |
---|
[2650] | 11 | end_level = int(end_level) |
---|
[2716] | 12 | else: |
---|
| 13 | end_level = 700 |
---|
[2655] | 14 | |
---|
[2632] | 15 | if key is None: |
---|
[3040] | 16 | levels = [l for l in range(0,end_level+200,10) |
---|
[2641] | 17 | if l % 100 < 30 and l < end_level + 110] |
---|
[2682] | 18 | voc = [('','')] |
---|
[2641] | 19 | for l in levels: |
---|
| 20 | level_nr,repeat = divmod(l, 100) |
---|
| 21 | if level_nr > end_level/100: |
---|
| 22 | voc += ("%s" % l,"%s (spillover)" % context.portal_vocabularies.levels.get("%d00" % (level_nr - 1))), |
---|
| 23 | elif repeat > 0: |
---|
[2649] | 24 | voc += ("%s" % l,"%s (on %d. probation)" % |
---|
[2641] | 25 | (context.portal_vocabularies.levels.get("%d00" % (level_nr)), |
---|
| 26 | (repeat // 10))), |
---|
| 27 | else: |
---|
[3041] | 28 | voc += ("%03d" % l,"%s" % |
---|
[2641] | 29 | (context.portal_vocabularies.levels.get("%d00" % (level_nr)))), |
---|
| 30 | return voc |
---|
[2649] | 31 | |
---|
[2655] | 32 | if key and key.isdigit(): |
---|
[2647] | 33 | ikey = int(key) |
---|
[2650] | 34 | else: |
---|
[3254] | 35 | raise KeyError |
---|
[3040] | 36 | level_nr,repeat = divmod(ikey, 100) |
---|
[2632] | 37 | l = [] |
---|
| 38 | |
---|
[3254] | 39 | level = context.portal_vocabularies.levels.get("%d00" % level_nr,None) |
---|
| 40 | if level is None: |
---|
| 41 | raise KeyError |
---|
| 42 | |
---|
[2641] | 43 | if level_nr > end_level/100: |
---|
[2649] | 44 | return "%s Spillover" % context.portal_vocabularies.levels.get("%d00" % (level_nr - 1)) |
---|
[2632] | 45 | |
---|
| 46 | if repeat > 0: |
---|
[2649] | 47 | level += " on %d. Probation" % (repeat // 10) |
---|
[2632] | 48 | |
---|
| 49 | return level |
---|
| 50 | |
---|