## Script (Python) "fill_session" ##bind container=container ##bind context=context ##bind namespace= ##bind script=script ##bind subpath=traverse_subpath ##parameters= ##title= ## # $Id: fill_session_in_course_results.py 5203 2010-05-23 04:29:20Z henrik $ """ """ try: from Products.zdb import set_trace except: def set_trace(): pass mtool = context.portal_membership member = mtool.getAuthenticatedMember() if str(member) not in ('admin',): return import logging import DateTime logger = logging.getLogger('fill_session_in_course_results') from Products.AdvancedQuery import Eq, Between, Le,In course_results = context.course_results students = context.portal_url.getPortalObject().campus.students brains = course_results() total = len(brains) edited = 0 for brain in brains: #set_trace() if not brain.session_id: data = {} data['key'] = brain.key if not students.hasObject(brain.student_id): logger.info("no student %s" % student_id) continue student = getattr(students, brain.student_id) if not student.hasObject("study_course"): logger.info("%s: no study_course" % brain.student_id) continue study_course = student.study_course if not study_course.hasObject(brain.level_id): logger.info("%s: no level %s" % (brain.student_id,brain.level_id)) continue level_obj = getattr(study_course, brain.level_id) level_doc = level_obj.getContent() #set_trace() session_id = level_doc.session if len(session_id) == 2: pass elif len(session_id) == 9: session_id = session_id[2:4] if len(session_id) != 2: logger.info("invalid session %s in level %s for student %s" % (session_id,brain.level_id,brain.student_id)) data['session_id'] = session_id course_results.modifyRecord(**data) logger.info("%s: session %s filled" % (brain.key,session_id)) edited += 1 #else: # logger.info("%s: %s" % (brain.student_id,brain.session_id)) logger.info("edited %d course results of %s total" % (edited,total))