## Script (Python) "fix06Verdict"
##bind container=container
##bind context=context
##bind namespace=
##bind script=script
##bind subpath=traverse_subpath
##parameters=
##title=
##
# $Id: fixReturningSession.py 2456 2007-10-28 07:09:46Z henrik $
"""
"""
try:
    from Products.zdb import set_trace
except:
    def set_trace():
        pass
import logging
logger = logging.getLogger('Skins.fix06Verdict')
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('')

query = ~ Eq('verdict','N/A') & ~ Eq('verdict','') & In('session',('2006/2007','06','6'))
brains = aq_students(query)
total = len(brains)
logger.info('started editing %d students with session 06 and non-empty verdict' % total)
count = 0
commit_after = 100

for brain in brains:
    count += 1
    if count and not count % commit_after:
        context.waeup_tool.doCommit()
        logger.info("Committing %s transactions, total %s" % (commit_after,count))
    try:
        study_course_doc = getattr(getattr(students,brain.id),'study_course').getContent()
        
        # final fix
        if brain.matric_no:
            verdict = study_course_doc.current_verdict
        else:
            verdict = ''
        study_course_doc.edit(mapping = { "current_verdict": '',
                                          "previous_verdict": verdict})

        # Info: The logging message is wrong if not matric_no
        logger.info("Current verdict of %s (%s, %s, %s, %s) moved to previous verdict" % (brain.id,
                                          brain.matric_no,
                                          brain.name,
                                          brain.review_state,
                                          brain.verdict,
                                          ))
    except:
        #rwrite('>>>> not found %s study_course' % (brain.id))
        pass
logger.info('finished editing %d students' % total)

return
