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

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

Several modifications made to enable payment for all sessions, all payment modes and both portals I tested all combinations.

'N/A' replaced by in level, verdict and session widgets. A missing value is now always .

File size: 4.3 KB
RevLine 
[1780]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
[2656]66info['verdict']=getattr(s_brain,'verdict','')
[1780]67
68
69students_object = context.portal_url.getPortalObject().campus.students
70student = getattr(students_object, student_id)
71info['id'] = student_id
72info['student'] = student
[1871]73review_state = info['review_state'] = context.getStudentReviewState()
[1780]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",)
[2454]82
[2427]83booking_allowed = False # booking temporarily disabled
84                        # the algorithm must be adapted to new course_results catalog
85                        # and/or FCEOkene modalities
[2454]86
87
[1780]88info['booking_allowed'] = booking_allowed
89if not booking_allowed:
90    info['acco'] = None
91    return info
[2656]92info['session'] = session = context.getSessionId()
[2454]93acco_id = 'accommodation_' + session[0]
[1780]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'
[2421]106elif int(s_brain.level) < 100:
[2427]107    bt = 'pr'
[2421]108elif s_brain.faculty in ('MED') and int(s_brain.level) >= 400:
109    bt = "med"
[1780]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
[2421]136
[1780]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.