source: WAeUP_SRP/trunk/skins/waeup_student/getAccommodationInfo.py @ 1758

Last change on this file since 1758 was 1726, checked in by Henrik Bettermann, 18 years ago

New students could not access their accommodation slip. Joachim, please check my fix.

  • Property svn:keywords set to Id
File size: 4.0 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'] = wf.getInfoFor(student,'review_state',None)
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",)
82info['booking_allowed'] = booking_allowed
83if not booking_allowed:
84    info['acco'] = None
85    return info
86acco_id = 'accommodation_2006'
87acco = getattr(student,acco_id,None)
88info['acco'] = acco
89info['acco_id'] = acco_id
90bt = 're'
91if acco is not None:
92    info['acco_doc'] = acco.getContent()
93    info['acco_review_state'] = wf.getInfoFor(acco,'review_state',None)
94d = {}
95if review_state == "cleared_and_validated":
96    bt = 'fr'
97elif int(s_brain.level) < 300:
98    bt = 're'
99else:
100    res = context.portal_catalog(portal_type = "Certificate", id = s_brain.course)
101    if res:
102        c_brain = res[0]
103        #from Products.zdb import set_trace; set_trace()
104        certificate = c_brain.getObject().getContent()
105        try:
106            certlevel = int(certificate.end_level)
107        except:
108            info["error"] = '"no end_level for","%s"' % c_brain.getId
109            return info
110        try:
111            studentlevel = int(s_brain.level)
112        except:
113            info["error"] = '"no level for","%s"' % s_brain.getId
114            return info
115        if studentlevel >= certlevel:
116            bt = "fi"
117d['sex'] = 'male'
118if s_brain.sex:
119    d['sex'] = 'female'
120if s_brain.course in ekehuan_certificates:
121    bt += "_ekenhuan"
122elif s_brain.course in pti_certificates:
123    bt += "_pti"
124elif s_brain.faculty in ('MED') and int(s_brain.level) >= 400:
125    bt += "_med"
126
127info['sex']=d['sex']
128
129
130d['bt'] = bt
131#from Products.zdb import set_trace
132#set_trace()
133student_status = "%(sex)s_%(bt)s" % d
134info['student_status'] = student_status
135return info
136
Note: See TracBrowser for help on using the repository browser.