## Script (Python) "ti_306_resolve" ##bind container=container ##bind context=context ##bind namespace= ##bind script=script ##bind subpath=traverse_subpath ##parameters= ##title= ## # $Id: ti_306_resolve.py 1983 2007-07-04 07:32:36Z henrik $ """ """ try: from Products.zdb import set_trace except: def set_trace(): pass import logging logger = logging.getLogger('Skins.ti_306_resolve') from Products.AdvancedQuery import Eq, Between, Le,In,MatchGlob aq_pins = context.portal_pins.evalAdvancedQuery pins = context.portal_pins() scat = context.students_catalog request = context.REQUEST session = request.SESSION response = request.RESPONSE setheader = request.RESPONSE.setHeader students = context.portal_url.getPortalObject().campus.students #query = Eq('pin','APP') #brains = aq_pins(query) #total = len(brains) #logger.info('found %d APP PINs' % total) count = 0 commit_after = 100 todelete = [] total = len(pins) logger.info('started, %d PINs found' % total) for brain in pins: if not brain.pin.startswith('APP') or not brain.student: continue application = None sbrains = scat(jamb_reg_no = brain.student.upper()) if len(sbrains)>0: sbrain = sbrains[0] else: logger.info('%s %s' % (brain.pin,brain.student)) continue try: application = getattr(getattr(students,sbrain.id),'application') except: logger.info('%s, application does not exist' % (brain.student)) continue prefix,batch_no,number = brain.pin[:3],brain.pin[3:-10],brain.pin[-10:] app_doc = application.getContent() if app_doc.app_ac_pin.startswith('APP'): logger.info('%s, %s, %s already shows correct PIN %s (reason: check_admission failed the first time)' % (count, brain.student,sbrain.id,app_doc.app_ac_pin)) continue app_doc.edit(mapping={'app_ac_pin' : '%s-%s-%s' % (prefix,batch_no,number)}) logger.info('%s, %s, %s, %s-%s-%s replaced' % (count, brain.student,sbrain.id,prefix,batch_no,number)) count += 1 if count and not count % commit_after: context.waeup_tool.doCommit() logger.info("committed %d transactions" % commit_after) logger.info('finished for %d of %d' % (count,total)) return