## Script (Python) "setNewEntryMode" ##bind container=container ##bind context=context ##bind namespace= ##bind script=script ##bind subpath=traverse_subpath ##parameters= ##title= ## # $Id: setNewEntryMode.py 1715 2007-04-26 19:23:33Z joachim $ """ reindex students_catalog entry_mode index """ try: from Products.zdb import set_trace except: def set_trace(): pass from Products.AdvancedQuery import Eq, Between, Le,In aq_students = context.students_catalog.evalAdvancedQuery request = context.REQUEST session = request.SESSION response = request.RESPONSE setheader = request.RESPONSE.setHeader #students = context.portal_url.getPortalObject().campus.students import logging logger = logging.getLogger('Skins.setNewEntryMode') def rwrite(s): response.setHeader('Content-type','text/html; charset=ISO-8859-15') response.write("%s
\r\n" % s) brains = context.portal_catalog(portal_type = 'Student') count = 0 commit_count = 0 logger.info('setNewEntryMode start') #progress_log = context.waeup_tool.openLog('test') #context.waeup_tool.writeLog(progress_log,"Start \n") umede = aq_students(In('entry_mode',('DE','UME'))) umede_ids = [r.id for r in umede] #set_trace() for brain in brains: if brain.getId not in umede_ids: continue stud_obj = brain.getObject() try: app_doc = stud_obj.application.getContent() except: continue em = getattr(app_doc,'entry_mode',None) if em not in ('UME','DE'): continue try: sc_doc = stud_obj.study_course.getContent() except: sc_doc = None if em in ('ume_ft','de_ft'): new_em = em else: new_em = "%s_ft" % em.lower() if em in ('ume_ft','UME'): el = "100" elif em in ('de_ft','DE'): el = "200" app_doc.edit(mapping={'entry_mode': new_em, 'entry_level': el}) sid = brain.getId if sc_doc: sc_doc.edit(mapping={'current_mode': new_em}) context.students_catalog.modifyRecord(id = sid, mode=new_em, entry_mode=new_em, entry_level=el) else: context.students_catalog.modifyRecord(id = sid, entry_mode=new_em, entry_level=el) count += 1 commit_count += 1 if commit_count > 1000: context.waeup_tool.doCommit() logger.info('committing %d total %d' % (commit_count,count)) commit_count = 0 s = "%d: %s %s -> %s" % (count,brain.getPath(),em,new_em) rwrite(s) rwrite('Done') logger.info('setNewEntryMode finish')