## Script (Python) "ti_493_resolve"
##bind container=container
##bind context=context
##bind namespace=
##bind script=script
##bind subpath=traverse_subpath
##parameters=
##title=
##
# $Id: ti_493_resolve.py 3258 2008-02-29 09:44:47Z henrik $
"""
"""
try:
    from Products.zdb import set_trace
except:
    def set_trace():
        pass

mtool = context.portal_membership
member = mtool.getAuthenticatedMember()
if str(member) not in ('admin','joachim'):
    return


import logging
import DateTime
logger = logging.getLogger('Skins.ti_493_resolve')
from Products.AdvancedQuery import Eq, Between, Le,In
aq_students = context.students_catalog.evalAdvancedQuery
aq_portal = context.portal_catalog_real.evalAdvancedQuery
payments_catalog = context.payments_catalog
aq_payments = payments_catalog.evalAdvancedQuery
students_folder = context.portal_url.getPortalObject().campus.students

request = context.REQUEST
session = request.SESSION
response = request.RESPONSE
setheader = request.RESPONSE.setHeader
def rwrite(s):
    response.setHeader('Content-type','text/html; charset=ISO-8859-15')
    response.write("%s<br>\n\r" % s)
logger.info('start')
portal_payments = aq_portal(Eq('portal_type','Payment'))
sc_payments = aq_payments(Eq('type','sc'))
logger.info('found %d payments, %d SC payments' % (len(portal_payments),len(sc_payments)))
student_ids = [r.student_id for r in sc_payments]
count = 0
found = 0
set_trace()
for payment in portal_payments:
    count +=1
    student_id = payment.relative_path.split('/')[2]
    if student_id in student_ids:
        doc = payment.getObject().getContent()
        session_id = doc.type_description[doc.type_description.find('/')-2:doc.type_description.find('/')]
        if session_id == doc.session_id:
            continue
        found += 1
        logger.info("%d of %d: editing payment of %s, %s, %s, session_id from %s to %s" % (found,count,
                                                               student_id,
                                                               doc.date,
                                                               doc.type_description,
                                                               doc.session_id,
                                                               session_id))
        #doc.edit({'session_id': session_id})
logger.info('finished editing %d' % found)
