## Script (Python) "getStudyCourseInfo" ##bind container=container ##bind context=context ##bind namespace= ##bind script=script ##bind subpath=traverse_subpath ##parameters=student=None ##title= ## # $Id: getStudyCourseInfo.py 4557 2009-12-12 04:25:28Z henrik $ """ return Info about the Students StudyCourse """ import DateTime from Products.AdvancedQuery import Eq, Between, Le,In mtool = context.portal_membership if mtool.isAnonymousUser(): return None try: from Products.zdb import set_trace except: def set_trace(): pass import logging logger = logging.getLogger('Skins.getStudyCourseInfo') request = context.REQUEST wftool = context.portal_workflow # path_info = request.get('PATH_INFO').split('/') # info = {} info = context.waeup_tool.getAccessInfo(context) student_id = info['student_id'] if student_id is None: return None #info['is_so'] = context.isSectionOfficer() info['is_so'] = info['is_sectionofficer'] info['action'] = "%s" % context.absolute_url() info['choosen_ids'] = request.get('ids',[]) try: course = info['doc'] = context.getContent() except: return None #student_id = context.getStudentId() student_record = context.students_catalog.getRecordByKey(student_id) if not student_record: return None info['student'] = student_record cert_id = student_record.course # logger.info("before search") # starttime = DateTime.DateTime().timeTime() # res = context.portal_catalog_real.evalAdvancedQuery(Eq('id', cert_id)) # & # Eq('portal_type', "Certificate")) # logger.info("searchtime %f" % (DateTime.DateTime().timeTime() - starttime)) # if True: # #info['cert_id'] = cert_id # # brain = res[0] # # ci['title'] = brain.Title # # pl = brain.getPath().split('/') # # ci['faculty'] = pl[-4] # # ci['department'] = pl[-3] # ci['study_course'] = student_record.course # ci['faculty'] = student_record.faculty # ci['department'] = student_record.department # info['course_doc'] = ci # else: # info['cert_id'] = 'N/A' # ci['study_course'] = 'N/A' # ci['title'] = 'N/A' # ci['faculty'] = 'N/A' # ci['department'] = 'N/A' # info['course_doc'] = ci ci = {} ci['study_course'] = student_record.course ci['faculty'] = student_record.faculty ci['department'] = student_record.department info['course_doc'] = ci items = [] if hasattr(course,'current_verdict'): try: info['verdict'] = context.portal_vocabularies.verdicts.get(course.current_verdict).upper() except: info['verdict'] = course.current_verdict else: info['verdict'] = '' if hasattr(course,'previous_verdict'): try: previous_verdict = course.previous_verdict info['previous_verdict'] = context.portal_vocabularies.verdicts.get(course.previous_verdict).upper() except: info['previous_verdict'] = course.previous_verdict else: info['previous_verdict'] = '' previous_verdict = '' current_level = student_record.level levels = context.objectIds() review_state = wftool.getInfoFor(context,'review_state',None) student_review_state = student_record.review_state #if review_state != 'content_addable' and student_review_state == 'school_fee_paid': #and context.isStudent(): # wftool.doActionFor(context,'close_for_edit') has_paid = student_review_state == 'school_fee_paid' may_register = has_paid and\ current_level not in levels and\ (previous_verdict in ('A','B','C','F','J','L','M','N','Z') or\ current_level in ('000','100') or\ (student_record.entry_mode.startswith('de') and current_level == '200') or\ (student_record.entry_mode.startswith('ph') and current_level == '300')) missing_data = has_paid and\ current_level not in levels and\ not (previous_verdict or student_record.level) and\ not (current_level == '100' or\ (student_record.entry_mode.startswith('de') and current_level == '200')or\ (student_record.entry_mode.startswith('ph') and current_level == '300')) info['missing_data'] = missing_data levels.sort() info['create_level'] = None student_levels_voc = context.portal_vocabularies.student_levels if may_register: info['create_level'] = current_level info['create_level_str'] = student_levels_voc.get(current_level) for l in levels: row = {} row['id'] = l #row['title'] = "Level %s" % l row['title'] = student_levels_voc.get(l) row['url'] = "%s/%s" % (context.absolute_url(),l) items.append(row) info['items'] = items return info