## Script (Python) "ti_229_resolve"
##bind container=container
##bind context=context
##bind namespace=
##bind script=script
##bind subpath=traverse_subpath
##parameters=
##title=
##
# $Id: ti_229_resolve.py 1881 2007-06-12 08:03:32Z henrik $
"""
resolve ticket #229
"""
try:
    from Products.zdb import set_trace
except:
    def set_trace():
        pass
import logging
#>>>>>>>>>>>>>>>><
logger = logging.getLogger('Skins.ti_229_resolve')
# logger.info('already done on  by joachim')
# return
#<<<<<<<<<<<<<<<<<
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
#from string import Template
def rwrite(s):
    response.setHeader('Content-type','text/html; charset=ISO-8859-15')
    response.write("%s<br>\n\r" % s)

logger.info('ti_229 started')

query = In('level',(0,''))
brains = aq_students(query)
total = len(brains)
logger.info('found %d students' % total)
count = 0
commit_after = 5
for brain in brains:
    try:
        study_course = getattr(getattr(students,brain.id),'study_course')
    except:
        logger.info('study_course of %s not found' % brain.id)
        continue
    s_results = context.results_import(matric_no = brain.matric_no)
    if s_results:
        lnr = context.getLevelFromResultsCosCode(s_results)
        level = "%d00" % lnr
        verdict,eligible = context.getVerdict(s_results[0].Verdict)
        if eligible:
            level = "%d00" % (lnr + 1)
    else:
        logger.info('matric_no %s not found in results_import' % brain.matric_no)
        continue
    count += 1

    study_course.getContent().edit(mapping={'current_level': level,
                                            'current_verdict': verdict,
                                           }
                                  )
    logger.info('%d of %d changed level/verdict of %s to %s/%s'  % (count,
                                                                    total,
                                                                    brain.id,
                                                                    level,
                                                                    verdict,
                                                                   ))
    if not count % commit_after:
        context.waeup_tool.doCommit()
        logger.info("committed %d transactions" % commit_after)
logger.info('ti_229 finished for %d of %d' % (count,total))
return
