source: WAeUP_SRP/base/skins/waeup_accommodation/getAccommodationInfo.py @ 2639

Last change on this file since 2639 was 2454, checked in by Henrik Bettermann, 17 years ago

rebuild getNextInfo.py completely
fetch session from portal properties.xml
change all scripts using getSessionId
remove StudentCourseResult? relevant code from event services
make pay_by_sc.py and interswitch_cb.py work (rebuild both)

File size: 4.3 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
18request = context.REQUEST
19mtool = context.portal_membership
20wf = context.portal_workflow
21member = mtool.getAuthenticatedMember()
22member_id = str(member)
23path_info = request.get('PATH_INFO').split('/')
24
25if mtool.isAnonymousUser():
26    return None
27info = {}
28if student_id is None:
29    requested_id = context.getStudentId()
30    if requested_id and not context.isStaff() and member_id != requested_id:
31        logger.info('%s tried to access %s' % (member_id,requested_id))
32        return None
33    elif context.isStaff():
34        student_id = requested_id
35    else:
36        student_id = member_id
37res = context.students_catalog(id=student_id)
38if len(res) != 1:
39    logger.info('%s not found in students_catalog' % student_id)
40    return None
41
42ekehuan_certificates = ('BARTAPG',
43                        'BARTAPM',
44                        'BARTCER',
45                        'BARTFAA',
46                        'BARTFAP',
47                        'BARTSCP',
48                        'BARTTXT',
49                        'BARTMAS',
50                        'BARTTHR',
51                        )
52pti_certificates = ('BENGIEP',
53                    'BENGGCPP',
54                    'BENGEEP',
55                    'BENGGEP',
56                    'BENGPEP',
57                    'BENGMEP',
58                    )
59s_brain = res[0]
60info['error'] = None
61info['matric_no']=s_brain.matric_no
62info['jamb_reg_no']=s_brain.jamb_reg_no
63info['name']=s_brain.name
64info['email']=s_brain.email
65info['level']=s_brain.level
66info['verdict']=getattr(s_brain,"verdict","N/A")
67
68
69students_object = context.portal_url.getPortalObject().campus.students
70student = getattr(students_object, student_id)
71info['id'] = student_id
72info['student'] = student
73review_state = info['review_state'] = context.getStudentReviewState()
74booking_allowed = False
75if review_state in ('cleared_and_validated','returning','school_fee_paid','courses_registered', 'courses_validated',):
76    booking_allowed = True
77    if s_brain.matric_no:
78        res = context.results_import(matric_no = s_brain.matric_no)
79        if res:
80            booking_allowed = info['verdict'] in ("A",
81                                                 "B",)
82
83booking_allowed = False # booking temporarily disabled
84                        # the algorithm must be adapted to new course_results catalog
85                        # and/or FCEOkene modalities
86
87
88info['booking_allowed'] = booking_allowed
89if not booking_allowed:
90    info['acco'] = None
91    return info
92info['session'] = session = context.getSessionId() 
93acco_id = 'accommodation_' + session[0]
94acco = getattr(student,acco_id,None)
95info['acco'] = acco
96info['acco_id'] = acco_id
97bt = 're'
98if acco is not None:
99    info['acco_doc'] = acco.getContent()
100    info['acco_review_state'] = wf.getInfoFor(acco,'review_state',None)
101d = {}
102if review_state == "cleared_and_validated":
103    bt = 'fr'
104elif int(s_brain.level) < 300:
105    bt = 're'
106elif int(s_brain.level) < 100:
107    bt = 'pr'
108elif s_brain.faculty in ('MED') and int(s_brain.level) >= 400:
109    bt = "med"
110else:
111    res = context.portal_catalog(portal_type = "Certificate", id = s_brain.course)
112    if res:
113        c_brain = res[0]
114        #from Products.zdb import set_trace; set_trace()
115        certificate = c_brain.getObject().getContent()
116        try:
117            certlevel = int(certificate.end_level)
118        except:
119            info["error"] = '"no end_level for","%s"' % c_brain.getId
120            return info
121        try:
122            studentlevel = int(s_brain.level)
123        except:
124            info["error"] = '"no level for","%s"' % s_brain.getId
125            return info
126        if studentlevel >= certlevel:
127            bt = "fi"
128d['sex'] = 'male'
129if s_brain.sex:
130    d['sex'] = 'female'
131if s_brain.course in ekehuan_certificates:
132    bt += "_ekenhuan"
133elif s_brain.course in pti_certificates:
134    bt += "_pti"
135
136
137info['sex']=d['sex']
138
139
140d['bt'] = bt
141#from Products.zdb import set_trace
142#set_trace()
143student_status = "%(sex)s_%(bt)s" % d
144info['student_status'] = student_status
145return info
146
Note: See TracBrowser for help on using the repository browser.