## Script (Python) "setCurrentSession"
##bind container=container
##bind context=context
##bind namespace=
##bind script=script
##bind subpath=traverse_subpath
##parameters=REQUEST
##title=
##
# $Id: set_current_session.py 1757 2007-05-08 17:22:45Z joachim $
"""
set current_session of all students
"""
import logging
logger = logging.getLogger('Skins.setCurrentSession')

request = REQUEST
response = request.RESPONSE
try:
    from Products.zdb import set_trace
except:
    def set_trace():
        pass

def rwrite(s):
    response.setHeader('Content-type','text/html; charset=ISO-8859-15')
    #response.setHeader('Content-length','%d' % (len(s)))
    #response.setStatus('OK')
    response.write("%s <br/>\n\r" % s)
    return

mtool = context.portal_membership
member = mtool.getAuthenticatedMember()
students_catalog = context.students_catalog
students_folder = context.portal_url.getPortalObject().campus.students

#rwrite("start")
if str(member) not in ('admin','joachim'):
    return
all = students_catalog()
logger.info('%s starts to set %s ' % (member,len(all)))
c = 0
count = 0
not_count = 0
not_count2 = 0
#set_trace()
for student in all:
    c += 1
    if c > 1000:
        logger.info('%s set %d, not found %d, session fields already set %d' % (member,count,not_count,not_count2))
        c = 0
        context.waeup_tool.doCommit()
    if not student.session:
        try:
            study_course_doc = getattr(getattr(students_folder,student.id),'study_course').getContent()
            study_course_doc.edit(mapping = {'current_session': '06'})
            count += 1
            data = {'session':'06'}
            data['id'] = student.id
            students_catalog.modifyRecord(**data)
        except:
            not_count += 1
            #rwrite("%s/study_course not found" % student.id)
    else:
        not_count2 +=1

logger.info('%s finished to set %d of %d ' % (member,count,len(all)))
return

