## 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 1181 2007-01-02 22:35:34Z henrik $ """ return Info about the current Student """ import logging logger = logging.getLogger('Student.Accommodation.Info') import DateTime 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 res = context.students_catalog(id=student_id) if len(res) != 1: logger.info('"%s","not found in students_catalog"') return None ekehuan_certificates = ('BARTAPG', 'BARTAPM', 'BARTCER', 'BARTFAA', 'BARTFAP', 'BARTSCP', 'BARTTXT', 'BARTMAS', 'BARTTHR', ) pti_certificates = ('BENGIEP', 'BENGGCPP', 'BENGEEP', 'BENGGEP', 'BENGPEP', 'BENGMEP', ) s_brain = res[0] students_object = context.portal_url.getPortalObject().campus.students res = context.results_import(matric_no = s_brain.matric_no) student = getattr(students_object, student_id) info['id'] = student_id info['student'] = student review_state = info['review_state'] = wf.getInfoFor(student,'review_state',None) booking_allowed = False if review_state in ('returning','school_fee_paid','courses_registered', 'courses_validated',): res = context.results_import(matric_no = s_brain.matric_no) if res: booking_allowed = res[0].Verdict in ("SUCCESSFUL STUDENT", "STUDENT WITH CARRYOVER COURSES",) elif review_state in ('cleared_and_validated',): booking_allowed = True info['booking_allowed'] = booking_allowed if not booking_allowed: return info acco_id = 'accommodation_2006' acco = getattr(student,acco_id,None) info['acco'] = acco info['acco_id'] = acco_id bt = 're' if acco is not None: info['acco_doc'] = acco.getContent() info['acco_review_state'] = wf.getInfoFor(acco,'review_state',None) d = {} if review_state == "cleared_and_validated": bt = 'fr' elif int(s_brain.level) < 600: bt = 're' else: res = context.portal_catalog(portal_type = "Certificate", id = s_brain.course) if res: c_brain = res[0] certificate = s_brain.getObject().getContent() if int(s_brain.level) +100 == int(certificate.end_level): bt = "fi" d['sex'] = 'male' if s_brain.sex: d['sex'] = 'female' if s_brain.course in ekehuan_certificates: bt += "_ekenhuan" elif s_brain.course in pti_certificates: bt += "_pti" elif s_brain.faculty in ('MED') and int(s_brain.level) >= 400: bt += "_med" d['bt'] = bt #from Products.zdb import set_trace #set_trace() student_status = "%(sex)s_%(bt)s" % d info['student_status'] = student_status return info