source: WAeUP_SRP/trunk/skins/waeup_accommodation/getAccommodationInfo.py @ 4007

Last change on this file since 4007 was 4007, checked in by Henrik Bettermann, 16 years ago

ease disabling hostel booking (not yet tested)

FCE Okene remains unchanged.

File size: 4.8 KB
Line 
1## Script (Python) "getAccommodationInfo"
2##bind container=container
3##bind context=context
4##bind namespace=
5##bind script=script
6##bind subpath=traverse_subpath
7##parameters=student_id=None
8##title=
9##
10# $Id: getAccommodationInfo.py 1726 2007-05-02 06:21:50Z henrik $
11"""
12return Info about the current Student
13"""
14import logging
15logger = logging.getLogger('Skins.getAccommodationInfo')
16import DateTime
17
18booking_disabled = True
19
20request = context.REQUEST
21mtool = context.portal_membership
22wf = context.portal_workflow
23member = mtool.getAuthenticatedMember()
24member_id = str(member)
25path_info = request.get('PATH_INFO').split('/')
26
27if mtool.isAnonymousUser():
28    return None
29info = {}
30if student_id is None:
31    requested_id = context.getStudentId()
32    if requested_id and not context.isStaff() and member_id != requested_id:
33        logger.info('%s tried to access %s' % (member_id,requested_id))
34        return None
35    elif context.isStaff():
36        student_id = requested_id
37    else:
38        student_id = member_id
39student_record = context.students_catalog.getRecordByKey(student_id)
40if student_record is None:
41    logger.info('%s not found in students_catalog' % student_id)
42    return None
43
44info['error'] = None
45info['matric_no']=student_record.matric_no
46info['jamb_reg_no']=student_record.jamb_reg_no
47info['name']=student_record.name
48info['email']=student_record.email
49info['level']=student_record.level
50info['verdict']=getattr(student_record,'verdict','')
51review_state = info['review_state'] = student_record.review_state
52info['session'] = session = context.getSessionId()
53students_object = context.portal_url.getPortalObject().campus.students
54student = getattr(students_object, student_id)
55info['student_id'] = student_id
56info['student'] = student
57
58# do not change these settings!
59
60booking_allowed = False
61info['booking_disabled'] = False
62
63# customize from here
64
65ekehuan_certificates = ('BARTAPG',
66                        'BARTAPM',
67                        'BARTCER',
68                        'BARTFAA',
69                        'BARTFAP',
70                        'BARTSCP',
71                        'BARTTXT',
72                        'BARTMAS',
73                        'BARTTHR',
74                        )
75
76new_states = ('cleared_and_validated',
77              'school_fee_paid',
78              'courses_registered',
79              'courses_validated',
80              )
81new = None
82arrived = None
83
84try:
85    new = int(student_record.entry_session) == int(session[0])
86except:   
87    logger.info('%s has invalid entry_session %s' % (student_id,student_record.entry_session))
88try:
89    arrived = int(student_record.session) == int(session[0])
90except:   
91    logger.info('%s has invalid session %s' % (student_id,student_record.session))   
92   
93level = None
94end_level = None
95previous = None
96
97try:
98    level = int(student_record.level)
99except:
100    logger.info('%s has invalid level %s' % (student_id,student_record.level))
101try:
102    end_level = int(student_record.end_level)
103except:
104    logger.info('%s has invalid end_level %s' % (student_id,student_record.end_level))
105try:
106    previous = int(student_record.session) == int(session[0]) - 1
107except:
108    logger.info('%s has invalid session %s' % (student_id,student_record.session))
109
110if level is None or end_level is None or student_record.review_state in ('deactivated','graduated'):
111    pass
112elif arrived:
113    if new:
114        booking_allowed = student_record.review_state in new_states
115    else:
116        booking_allowed = not (level % 100)
117elif previous:
118    booking_allowed = student_record.verdict in ('A','B',)
119
120info['booking_allowed'] = booking_allowed
121if not booking_allowed:
122    info['acco'] = None
123    info['student_status'] = ''
124    logger.info('%s: not eligible' % (student_id))     
125    return info
126
127d = {}
128delta = 0
129if previous:
130    delta = 100
131if new:
132    bt = 'fr'
133elif level + delta < end_level:
134    bt = 're'
135else:
136    bt = 'fi'
137d['sex'] = 'male'
138if student_record.sex:
139    d['sex'] = 'female'
140if student_record.faculty in ('MED','DEN') and level > 400:
141    bt += "_med"
142elif student_record.course in ekehuan_certificates:
143    bt += "_ekenhuan"
144#elif student_record.course in pti_certificates:
145#    bt += "_pti"
146info['sex']=d['sex']
147d['bt'] = bt
148student_status = "%(sex)s_%(bt)s" % d
149info['student_status'] = student_status
150
151# customize end
152
153acco_id = 'accommodation_' + session[0]
154acco = getattr(student,acco_id,None)
155info['acco'] = acco
156info['acco_id'] = acco_id
157info['maintenance_paid'] = False
158if acco is not None:
159    info['acco_doc'] = acco.getContent()
160    info['acco_review_state'] = wf.getInfoFor(acco,'review_state',None)
161    info['maintenance_paid'] = info['acco_review_state'] == "maintenance_fee_paid"
162elif booking_disabled:
163    info['booking_allowed'] = False
164    info['booking_disabled'] = True
165    logger.info('%s: %s eligible but booking disabled' % (student_id,student_status)) 
166
167return info
Note: See TracBrowser for help on using the repository browser.