## Script (Python) "cancel_allocation" ##bind container=container ##bind context=context ##bind namespace= ##bind script=script ##bind subpath=traverse_subpath ##parameters=session=None ##title= ## # $Id: cancel_allocation.py 5616 2010-12-27 10:18:18Z henrik $ """ cancel bed allocation (former release_bed) """ import logging logger = logging.getLogger('Skins.cancel_allocation') import DateTime current = DateTime.DateTime() request = context.REQUEST redirect = request.RESPONSE.redirect mtool = context.portal_membership wf = context.portal_workflow member = mtool.getAuthenticatedMember() member_id = str(member) path_info = request.get('PATH_INFO').split('/') students = context.portal_url.getPortalObject().campus.students student_id = context.getStudentId() if not context.isSectionOfficer(): logger.info('%s tried to access %s' % (member_id,student_id)) return None if student_id is not None: logger.info('%s requests bed_release for %s' % (member_id,student_id)) res = context.portal_accommodation(student=student_id) if len(res) == 0: logger.info('no bed of %s found' % (student_id)) return redirect("%s/%s/accommodations" % (students.absolute_url(),student_id)) allocated_bed = res[0] context.portal_accommodation.modifyRecord(bed=allocated_bed.bed,student=context.portal_accommodation.not_occupied) data = {} data['catkey'] = student_id + '|' + session data['bed'] = "-- cancelled on %s by section officer --" % context.getDateStr(fmt='%d/%m/%Y', dt=current) data['acco_maint_fee'] = "" #set_trace() context.accommodation_catalog.modifyRecord(**data) logger.info('%s released bed of %s' % (member_id,student_id)) return redirect("%s/%s/accommodations" % (students.absolute_url(),student_id)) return None