## Script (Python) "reindex_entry_mode"
##bind container=container
##bind context=context
##bind namespace=
##bind script=script
##bind subpath=traverse_subpath
##parameters=
##title=
##
# $Id: reindex_entry_mode.py 1328 2007-01-19 18:16:32Z joachim $
"""
reindex students_catalog entry_mode index
"""
try:
    from Products.zdb import set_trace
except:
    def set_trace():
        pass

request = context.REQUEST
session = request.SESSION
response = request.RESPONSE
setheader = request.RESPONSE.setHeader
students = context.portal_url.getPortalObject().campus.students

def rwrite(s):
    response.setHeader('Content-type','text/html; charset=ISO-8859-15')
    response.write(s)

cat = context.students_catalog

ems = cat.uniqueValuesFor('entry_mode')
##rwrite("entry_mode values: %s<br />\n" % (str(ems)))
##for em in ems:
##    res = cat(entry_mode = em)
##    rwrite("entry_mode: %s = %d<br />\n" % (em,len(res)))

sbrains = cat()
count = 0
lines = []
#set_trace()
for sb in sbrains:
    em = context.getFromData_entry_mode(sb.id)
    level_cat = sb.level
    new_em = context.getEntryMode(sb.jamb_reg_no)
    app_found = False
    if students.hasObject(sb.id):
        student_obj = getattr(students,sb.id)
        if student_obj.hasObject('application'):
            app = getattr(student_obj,'application')
            app.getContent().edit(mapping={'entry_mode': new_em})
            cat.modifyRecord(id = sb.id,entry_mode = new_em)
            app_found = True
    if not app_found:
        cat.modifyRecord(id = sb.id,entry_mode = "")
    s = '"%s","%s","%s","%s","%s","%s","%s"' % (app_found,sb.id,sb.matric_no,em,
                                                sb.jamb_reg_no,new_em,level_cat)
    #lines.append('"%s","%s","%s","%s"' % (sb.id,sb.matric_no,moe,new_em))
    rwrite("%s<br />" %s)

#setheader('Content-type','text/semicolon-seperated-values')
#setheader('Content-Disposition:', 'attachment; filename="fixLevelExport.csv"')
#setheader('Expires',  'Mon, 26 Jul 1997 05:00:00GMT') # Date in the past
#setheader('Cache-Control', 'no-store, no-cache,must-revalidate') # HTTP/1.1
#setheader('Cache-Control', 'post-check=0,pre-check=0')
#setheader('Pragma', 'no-cache') # HTTP/1.0
#return '\n'.join(lines)

rwrite("<br />\n Done" )

