source: WAeUP_SRP/trunk/skins/waeup_futminna/getStudyLevelInfo.py @ 13485

Last change on this file since 13485 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: 4.1 KB
Line 
1## Script (Python) "getStudyLevelInfo"
2##bind container=container
3##bind context=context
4##bind namespace=
5##bind script=script
6##bind subpath=traverse_subpath
7##parameters=student=None
8##title=
9##
10# $Id: getStudyLevelInfo.py 6862 2011-10-05 06:39:58Z henrik $
11"""
12return Info about the Studylevel
13try:
14    from Products.zdb import set_trace
15except:
16    def set_trace():
17        pass
18"""
19
20info = context.waeup_tool.getAccessInfo(context)
21student_id = info['student_id']
22if student_id is None:
23    return None
24
25mtool = context.portal_membership
26member = mtool.getAuthenticatedMember()
27member_id = str(member)
28
29course_results = context.course_results
30request = context.REQUEST
31response = request.RESPONSE
32import logging
33logger = logging.getLogger('Skins.getStudyLevelInfo')
34
35level_id  =  context.getId()
36level_doc = info['doc'] = context.getContent()
37
38info['is_so'] = is_so = info['is_sectionofficer']
39#info['is_student'] = is_student = context.isStudent()
40info['is_ca'] = is_ca = context.isCourseAdviser()
41#info['student'] = student = context.students_catalog(id=student_id)[0]
42info['student'] = student = context.students_catalog.getRecordByKey(student_id)
43info['review_state'] = review_state = student.review_state
44is_current_level = level_id == student.level
45school_fee_paid =  review_state == 'school_fee_paid'
46info['is_current_level'] = is_current_level
47info['has_verdict'] = has_verdict = level_doc.verdict
48
49info['submission_allowed']= school_fee_paid and is_current_level and not has_verdict and level_id != '101'
50info['validation_allowed']= review_state == 'courses_registered' and is_current_level and level_id != '101'
51info['rejection_allowed']= review_state in ('courses_registered', 'courses_validated','returning',) and\
52                                             is_current_level and level_id != '101'
53info['validated'] = level_doc.validated_by and not (is_current_level and review_state in ('courses_registered',))
54info['show_check_boxes'] =  (is_ca and school_fee_paid and is_current_level and not has_verdict) or\
55                            (info['is_student'] and school_fee_paid and is_current_level and not has_verdict) or\
56                            level_id == '101' or\
57                            (is_so) # and is_current_level and not has_verdict)
58
59info['verdict'] = context.portal_vocabularies.verdicts.get(level_doc.verdict).upper()
60info['session'] = context.portal_vocabularies.sessions.get(level_doc.session)
61info['level_str'] = context.portal_vocabularies.student_levels.get(level_id)
62
63info['choosen_ids'] = request.get('ids',[])
64
65cert_id = student.course
66info['cert_id'] = cert_id
67total_credits,gpa,carry_overs,normal1,normal2,normal3 = course_results.getCourses(student_id,level_id)
68info['total_credits'] = total_credits
69
70#start customization
71
72if context.objectIds():
73    course_results.moveResultsHere(context,student_id)
74    logger.info("%s initiated moveResultsHere for %s in level %s" % (member_id,student_id,level_id))
75
76max_credits = 50
77try:
78    if int(context.getId()) >=  int(student.end_level):
79        max_credits = 51
80except:
81    logger.info("%s has strange level id %s" % (student_id,level_id))
82info['without_score'] = without_score = True
83if without_score:
84    for rows in (normal1,normal2,normal3):
85        for row in rows:
86            row['score'] = 0
87info['without_cascore'] = True
88
89info['max_credits'] = max_credits
90info['credits_exceeded'] = total_credits > max_credits
91current_session = student.session
92info['show_submit'] = not info['credits_exceeded'] and level_id != '101'
93info['show_update'] = level_id != '101'
94#end customization
95
96info['gpa'] = gpa
97if gpa and total_credits:
98    info['gpa'] = "%4.2f" % (float(gpa)/int(total_credits))
99
100# carry_overs.sort(cmp_semester_id)
101info['carry_overs'] = carry_overs
102# normal.sort(cmp_semester_id)
103
104info['normal1'] = normal1
105info['normal2'] = normal2
106info['normal3'] = normal3
107
108info['data_missing'] = not info['normal1'] and not info['normal2'] and not info['normal3']
109info['spillover'] = student.level > student.end_level
110
111students_object = context.portal_url.getPortalObject().campus.students
112student = getattr(students_object, student_id)
113info['app'] = student.application
114info['app_doc'] = student.application.getContent()
115return info
Note: See TracBrowser for help on using the repository browser.