## Script (Python) "getTranscriptInfo" ##bind container=container ##bind context=context ##bind namespace= ##bind script=script ##bind subpath=traverse_subpath ##parameters=student=None ##title= ## # $Id: getStudyLevelInfo.py 2760 2007-11-26 07:39:15Z henrik $ """ return Info about the Studylevel try: from Products.zdb import set_trace except: def set_trace(): pass """ request = context.REQUEST response = request.RESPONSE import logging logger = logging.getLogger('Skins.getTranscriptInfo') info = context.waeup_tool.getAccessInfo(context) student_id = info['student_id'] if student_id is None: return None mtool = context.portal_membership if mtool.isAnonymousUser(): # or not context.isSectionOfficer(): return None mtool = context.portal_membership member = mtool.getAuthenticatedMember() member_id = str(member) course_results = context.course_results student_record = context.students_catalog.getRecordByKey(student_id) info['student_record'] = context.getFormattedStudentEntry(student_record) year_courses = [[],[],[],[],[],[],[],[],[]] year_details = [{'year':0},{'year':1},{'year':2},{'year':3},{'year':4},{'year':5},{'year':6},{'year':7},{'year':8}] courses = course_results.getAllCourses(student_id) for course in courses: year = divmod(int(course['level_id']),100)[0] year_courses[year].append(course) if not getattr(year_details[year],'session',None): year_details[year]['session'] = context.portal_vocabularies.sessions.get(course['session_id']) year_counter = 0 cgpa = 0 c_total_credits = 0 for year in year_courses: gpa = 0 total_credits = 0 for course in year: if course['weight'] and course['credits']: gpa += int(course['weight']) * int(course['credits']) total_credits += int(course['credits']) cgpa += gpa c_total_credits += total_credits if gpa and total_credits: year_details[year_counter]['total_credits'] = total_credits year_details[year_counter]['gpa'] = "%4.2f" % (float(gpa)/int(total_credits)) else: year_details[year_counter]['total_credits'] = 0 year_details[year_counter]['gpa'] = 0 if cgpa and c_total_credits: year_details[year_counter]['c_total_credits'] = c_total_credits year_details[year_counter]['cgpa'] = "%4.2f" % (float(cgpa)/int(c_total_credits)) else: year_details[year_counter]['c_total_credits'] = 0 year_details[year_counter]['cgpa'] = 0 year.sort(cmp=lambda x,y: cmp("%(semester)s%(code)s" % x, "%(semester)s%(code)s" % y)) year_counter += 1 info['year_details'] = year_details info['year_courses'] = year_courses return info