## Script (Python) "search_pins" ##bind container=container ##bind context=context ##bind namespace= ##bind script=script ##bind subpath=traverse_subpath ##parameters=REQUEST ##title= ## # $Id: fixLevel.py 1250 2007-01-09 17:19:20Z joachim $ """ list Students for ClearanceOfficers """ request = REQUEST wftool = context.portal_workflow mtool = context.portal_membership member = mtool.getAuthenticatedMember() roles = member.getRolesInContext(context) retcat = context.returning_import rcat = context.results_import scat = context.students_catalog from Products.AdvancedQuery import Eq, Between, Le,In aq_students = context.students_catalog.evalAdvancedQuery if str(member) not in ('admin','joachim'): return count = 0 #from Products.zdb import set_trace;set_trace() values = scat.uniqueValuesFor('level') #query = ~ In("level",('100', '200', '300', '400', '500', '600')) #query = In("level",('',)) #res = aq_students(query) #from Products.zdb import set_trace;set_trace() modified = [] modified.append("%d to change" % len(res)) list = [] dbrains = {} for sbrain in res: list.append((sbrain.id,sbrain.matric_no,sbrain.course)) for id,m,c in list: erg = context.results_import(matric_no=m) if erg and erg[0].Level: context.students_catalog.modifyRecord(id = id, level=erg[0].Level) modified.append("%s, %s" % (id,m)) else: pres = context.portal_catalog(id=sbrain.id) if not pres: modified.append("no results for %s, %s" % (id,m)) continue review_state = pres[0].review_state if review_state not in ('admitted', 'clearance_pin_entered', 'clearance_requested', 'cleared_and_validated', ): modified.append("no new student %s" % (id)) continue cres = context.portal_catalog(id = c) if not cres: modified.append("no certificate %s for %s" % (id,c)) cert_doc = cres[0].getObject().getContent() level = getattr(cert_doc,'start_level',None) if level is None: modified.append("no start_level in certificate %s for %s" % (id,c)) context.students_catalog.modifyRecord(id=id, level=level) modified.append("%s, %s" % (id,c)) return '\n'.join(modified)