## Script (Python) "getAccommodationInfo" ##bind container=container ##bind context=context ##bind namespace= ##bind script=script ##bind subpath=traverse_subpath ##parameters=student_id=None ##title= ## # $Id: getAccommodationInfo.py 1726 2007-05-02 06:21:50Z henrik $ """ return Info about the current Student """ import logging logger = logging.getLogger('Skins.getAccommodationInfo') import DateTime pprops = context.portal_properties booking_disabled = not pprops.enable_acco_booking request = context.REQUEST mtool = context.portal_membership wf = context.portal_workflow member = mtool.getAuthenticatedMember() member_id = str(member) path_info = request.get('PATH_INFO').split('/') if mtool.isAnonymousUser(): return None info = {} if student_id is None: requested_id = context.getStudentId() if requested_id and not context.isStaff() and member_id != requested_id: logger.info('%s tried to access %s' % (member_id,requested_id)) return None elif context.isStaff(): student_id = requested_id else: student_id = member_id student_record = context.students_catalog.getRecordByKey(student_id) if student_record is None: logger.info('%s not found in students_catalog' % student_id) return None info['error'] = None info['matric_no']=student_record.matric_no info['jamb_reg_no']=student_record.jamb_reg_no info['name']=student_record.name info['email']=student_record.email info['level']=student_record.level info['verdict']=getattr(student_record,'verdict','') review_state = info['review_state'] = student_record.review_state info['session'] = session = context.getSessionId() students_object = context.portal_url.getPortalObject().campus.students student = getattr(students_object, student_id) info['student_id'] = student_id info['student'] = student # do not change these settings! booking_allowed = False info['booking_disabled'] = False # customize from here try: level = int(student_record.level) except: logger.info('%s has invalid level %s' % (student_id,student_record.level)) info['acco'] = None info['booking_allowed'] = False info['student_status'] = '' return info #Excluding 400L students from hostel allocations if level not in (400,410,420,) and review_state in ('cleared_and_validated','school_fee_paid','courses_registered', 'courses_validated',) and student_record.session == session[0]: info['booking_allowed'] = True info['online_payment'] = True # returning student can also book without having paid the school fee (see ticket #29) #elif review_state == 'returning' and int(student_record.session)+1 == int(session[0]): # info['booking_allowed'] = True # info['online_payment'] = True else: info['acco'] = None info['booking_allowed'] = False info['student_status'] = '' logger.info('%s: not eligible' % (student_id)) return info d = {} d['sex'] = 'male' #d['bt'] = 'all' if student_record.sex: d['sex'] = 'female' if level == 100: bt = 'fr' else: bt = 're' if student_record.faculty in ('SSE'): bt += "_sse" d['bt'] = bt info['sex']=d['sex'] student_status = "%(sex)s_%(bt)s" % d info['student_status'] = student_status # customize end acco_id = 'accommodation_' + session[0] acco = getattr(student,acco_id,None) info['acco'] = acco info['acco_id'] = acco_id info['maintenance_paid'] = False if acco is not None: info['acco_doc'] = acco.getContent() info['acco_review_state'] = wf.getInfoFor(acco,'review_state',None) info['maintenance_paid'] = info['acco_review_state'] == "maintenance_fee_paid" elif booking_disabled: info['booking_disabled'] = True logger.info('%s: %s eligible but booking disabled' % (student_id,student_status)) return info