## Script (Python) "ti_513_resolve" ##bind container=container ##bind context=context ##bind namespace= ##bind script=script ##bind subpath=traverse_subpath ##parameters= ##title= ## # $Id: ti_513_resolve.py 3371 2008-03-25 17:50:05Z joachim $ """ """ 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','joachim'): return import logging import DateTime logger = logging.getLogger('Skins.ti_513_resolve') from Products.AdvancedQuery import Eq, Between, Le,In aq_students = context.students_catalog.evalAdvancedQuery aq_portal = context.portal_catalog_real.evalAdvancedQuery students_folder = context.portal_url.getPortalObject().campus.students request = context.REQUEST session = request.SESSION response = request.RESPONSE setheader = request.RESPONSE.setHeader count = 0 found = 0 commit_after = 100 logger.info('start') students = context.students_catalog() wrong = {} missing_courses = [] wrong_starts = [] for student in students: count += 1 if student.jamb_reg_no.endswith('/07'): pos = 0 if student.jamb_reg_no[:5].isalpha(): pos = 5 elif student.jamb_reg_no[:4].isalpha(): if student.jamb_reg_no[:4] != 'UBNO': pos = 4 if pos: d = {} d['student_id'] = student.id d['jamb_reg_no_old'] = student.jamb_reg_no d['jamb_reg_no'] = student.jamb_reg_no[:3]+student.jamb_reg_no[pos:] #set_trace() if student.jamb_reg_no[:pos] not in wrong_starts: wrong_starts += student.jamb_reg_no[:pos], wrong[student.id] = d logger.info('found %d wrong of %d' % (len(wrong),count)) count = 0 for student_id,d in wrong.items(): try: getattr(getattr(students_folder,student_id),'application').getContent().edit(mapping=d) logger.info("%(student_id)s changed jamb_reg_no from %(jamb_reg_no_old)s to %(jamb_reg_no)s" % d) except: logger.info("%(student_id)s change failed") if count and not count % commit_after: context.waeup_tool.doCommit() logger.info("committing %d of total %d" % (commit_after,count)) count += 1 logger.info('finished')