##parameters=key=None
# $Id: getStudentLevelsVoc.py 2641 2007-11-13 14:07:36Z joachim $
"""
Return the levels as an vocabulary
#
try:
    from Products.zdb import set_trace
except:
    def set_trace():
        pass
"""
student_id = context.getStudentId()
if student_id:
    end_level = int(context.students_catalog(id = student_id)[0].end_level)
else:
    end_level = 600

if key is None:
    levels = [l for l in range(100,end_level+200,10)
               if l % 100 < 30 and l < end_level + 110]
    voc = []
    for l in levels:
        level_nr,repeat = divmod(l, 100)
        if level_nr > end_level/100:
            voc += ("%s" % l,"%s (spillover)" % context.portal_vocabularies.levels.get("%d00" % (level_nr - 1))),
        elif repeat > 0:
            voc += ("%s" % l,"%s (on %d. probation)" % 
                    (context.portal_vocabularies.levels.get("%d00" % (level_nr)),
                                                            (repeat // 10))),
        else:
            voc += ("%s" % l,"%s" % 
                    (context.portal_vocabularies.levels.get("%d00" % (level_nr)))),
    return voc
        
ikey = int(key)
level_nr,repeat = divmod(ikey, 100)
l = []

level = context.portal_vocabularies.levels.get("%d00" % level_nr)
if level_nr > end_level/100:
    return "%s (spillover)" % context.portal_vocabularies.levels.get("%d00" % (level_nr - 1))

if repeat > 0:
    level += " (on %d. probation)" % (repeat // 10)

return level

