##parameters=REQUEST
# $Id: fixReservedBeds.py 1447 2007-02-20 13:41:26Z joachim $
"""
process the the accommodation reservation
"""
import DateTime
current = DateTime.DateTime()
request = context.REQUEST
pr = context.portal_registration
wftool = context.portal_workflow
lt = context.portal_layouts
mtool = context.portal_membership
member = mtool.getAuthenticatedMember()
acco_cat = context.portal_accommodation
import logging
logger = logging.getLogger('Skins.fixReservedBed')
students = context.portal_url.getPortalObject().campus.students
hostels = context.portal_url.getPortalObject().campus.accommodation.objectItems()
acco_id = "accommodation_%s" % context.getSessionId()
logger.info('%s starts fixReservedBeds' % (member))
#from Products.zdb import set_trace;set_trace()
for h_id,h in hostels:
    h_doc = h.getContent()
    reserved = context.reservedRoomsVoc(doc=h_doc)
    for hr,hrv in reserved:
        for k,v in context.getAccoHallBeds(doc=h_doc):
            bid = "%s_%s_%s" % (h_id,hr,k)
            res = acco_cat(bed = bid)
            if not res:
                continue
            bed = res[0]
            if not bed.student:
                continue
            student_obj = getattr(students,bed.student)
            if acco_id in student_obj.objectIds():
                acco_doc = getattr(student_obj, acco_id).getContent()
                if acco_doc.bed != bid:
                    acco_cat.modifyRecord(bed=bid,student = '')
                    logger.info('"%s","removed allocation of %s for","%s"' % (member,bid,bed.student))
logger.info('%s finishes fixReservedBeds' % (member))
return request.RESPONSE.redirect("%s" % context.absolute_url())




