## Script (Python) "pay_accommodation.py"
##bind container=container
##bind context=context
##bind namespace=
##bind script=script
##bind subpath=traverse_subpath
##parameters=REQUEST
# $Id: pay_accommodation.py 5621 2010-12-28 08:53:23Z henrik $
"""
process the the accommodation fee payment
"""
try:
    from Products.zdb import set_trace
except:
    def set_trace():
        pass
import DateTime
current = DateTime.DateTime()
pr = context.portal_registration
wftool = context.portal_workflow
lt = context.portal_layouts
info = context.getAccommodationStatus()

import logging
logger = logging.getLogger('Skins.pay_accommodation')

if info is None:
    member_id = str(context.portal_membership.getAuthenticatedMember())
    logger.info('%s tried to pay accommodation' % (member_id))
    return context.REQUEST.RESPONSE.redirect("%s/srp_invalid_access" % context.portal_url())

#if info['booking_disabled']:
#    return context.REQUEST.RESPONSE.redirect("%s/booking_disabled" % info['student'].absolute_url())
#if not info['booking_allowed']:
#    return context.REQUEST.RESPONSE.redirect("%s/no_booking_allowed" % info['student'].absolute_url())
student = info['student']
student_id = info['student_id']
acco_id = info['acco_id']
session = info['session']
mode = 'edit'
validate = REQUEST.has_key("cpsdocument_edit_button")
button = 'Submit'


res,psm,ds = lt.renderLayout(layout_id= 'student_accommodation_fe',
                      schema_id= 'student_accommodation',
                      context=context,
                      mapping=validate and REQUEST,
                      ob=info,
                      layout_mode=mode,
                      formaction = "pay_accommodation",
                      button = button)

if psm == 'invalid':
    member_id = str(context.portal_membership.getAuthenticatedMember())
    logger.info('%s entered invalid data' % (member_id))
    psm = "Please correct your input."
    return context.pay_accommodation_form(rendered = res,
                                 psm = psm,
                                 mode = mode,
                                 ds = ds,
                                 )
elif psm == '':
    return context.pay_accommodation_form(rendered = res,
                                 psm = None,
                                 mode = mode,
                                 ds = ds,
                                 )
elif psm == 'valid':
    pass

data={}
data['acco_maint_sc_pin'] = ds['acco_maint_sc_pin']
data['acco_maint_date'] = current
data['catkey'] =student_id + '|' + session
data['reservation_status'] = 'maintenance_fee_paid'

context.accommodation_catalog.modifyRecord(**data)

logger.info('%s paid accommodation in session %s' % (student_id,session))

return context.REQUEST.RESPONSE.redirect("%s/accommodations" % student.absolute_url())

