source: WAeUP_SRP/trunk/skins/waeup_futminna/getAccommodationStatus.py @ 17946

Last change on this file since 17946 was 7131, checked in by Henrik Bettermann, 13 years ago

Students couldn't be relocated after changing the sex attribute because the value was taken from the existing accommodation record.

  • Property svn:keywords set to Id
File size: 4.0 KB
Line 
1## Script (Python) "getAccommodationStatus"
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: getAccommodationStatus.py 7131 2011-11-17 16:38:45Z henrik $
11"""
12return Info about the current Student
13"""
14try:
15    from Products.zdb import set_trace
16except:
17    def set_trace():
18        pass
19
20import logging
21logger = logging.getLogger('Skins.getAccommodationStatus')
22import DateTime
23
24pprops = context.portal_properties
25booking_disabled = not pprops.enable_acco_booking
26
27request = context.REQUEST
28mtool = context.portal_membership
29wf = context.portal_workflow
30member = mtool.getAuthenticatedMember()
31member_id = str(member)
32path_info = request.get('PATH_INFO').split('/')
33
34if mtool.isAnonymousUser():
35    return None
36info = {}
37if student_id is None:
38    requested_id = context.getStudentId()
39    if requested_id and not context.isStaff() and member_id != requested_id:
40        logger.info('%s tried to access %s' % (member_id,requested_id))
41        return None
42    elif context.isStaff():
43        student_id = requested_id
44    else:
45        student_id = member_id
46student_record = context.students_catalog.getRecordByKey(student_id)
47if student_record is None:
48    logger.info('%s not found in students_catalog' % student_id)
49    return None
50
51info['error'] = None
52info['matric_no']=student_record.matric_no
53info['jamb_reg_no']=student_record.jamb_reg_no
54info['name']=student_record.name
55info['email']=student_record.email
56info['level']=student_record.level
57info['verdict']=getattr(student_record,'verdict','')
58review_state = info['review_state'] = student_record.review_state
59info['session'] = session = context.getSessionId()
60students_object = context.portal_url.getPortalObject().campus.students
61student = getattr(students_object, student_id)
62info['student_id'] = student_id
63info['student'] = student
64
65# do not change these settings!
66
67booking_allowed = False
68info['booking_disabled'] = False
69
70# customize from here
71
72try:
73    level = int(student_record.level)
74except:
75    logger.info('%s has invalid level %s' % (student_id,student_record.level))
76    info['acco'] = None
77    info['booking_allowed'] = False
78    info['student_status'] = ''
79    return info   
80
81if review_state in ('cleared_and_validated','school_fee_paid','courses_registered', 'courses_validated',) and student_record.session == session[0]:
82    info['booking_allowed'] = True
83    info['online_payment'] = True
84# returning student can also book without having paid the school fee (see ticket #29)
85#elif review_state == 'returning' and int(student_record.session)+1 == int(session[0]):
86#    info['booking_allowed'] = True
87#    info['online_payment'] = True
88else:
89    info['acco'] = None
90    info['booking_allowed'] = False
91    info['student_status'] = ''
92    #logger.info('%s: not eligible' % (student_id))
93    return info
94
95d = {}
96d['sex'] = 'male'
97#d['bt'] = 'all'
98if student_record.sex:
99    d['sex'] = 'female'
100
101if level == 100:
102    bt = 'fr'
103else:
104    bt = 're'   
105if student_record.faculty in ('SSE'):
106    bt += "_sse"   
107d['bt'] = bt   
108
109info['sex']=d['sex']
110student_status = "%(sex)s_%(bt)s" % d
111info['student_status'] = student_status
112
113# customize end
114
115acco_id = student_id + '|' + session[0]
116info['acco_id'] = acco_id
117
118if booking_disabled:
119  info['booking_disabled'] = True
120  #logger.info('%s: %s eligible but booking disabled' % (student_id,student_status)) 
121
122accommodation_record = context.accommodation_catalog.getRecordByKey(acco_id)
123if accommodation_record is None:
124    return info
125 
126info['booking_allowed'] = False
127info['acco_res_date'] = accommodation_record.acco_res_date
128info['acco_res_sc_pin'] = accommodation_record.acco_res_sc_pin
129info['acco_maint_fee'] = accommodation_record.acco_maint_fee
130info['acco_maint_code'] = accommodation_record.acco_maint_code
131info['bed'] = accommodation_record.bed
132info['session'] = accommodation_record.session
133info['maintenance_paid'] = accommodation_record.reservation_status == 'maintenance_fee_paid'
134
135return info
Note: See TracBrowser for help on using the repository browser.