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

Last change on this file since 1737 was 1726, checked in by Henrik Bettermann, 17 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
RevLine 
[1161]1## Script (Python) "getAccommodationInfo"
[1100]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
[1571]15logger = logging.getLogger('Skins.getAccommodationInfo')
[1100]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:
[1571]31        logger.info('%s tried to access %s' % (member_id,requested_id))
[1100]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:
[1571]39    logger.info('%s not found in students_catalog' % student_id)
[1100]40    return None
[1359]41
[1100]42ekehuan_certificates = ('BARTAPG',
43                        'BARTAPM',
44                        'BARTCER',
45                        'BARTFAA',
46                        'BARTFAP',
47                        'BARTSCP',
48                        'BARTTXT',
49                        'BARTMAS',
50                        'BARTTHR',
51                        )
[1117]52pti_certificates = ('BENGIEP',
53                    'BENGGCPP',
54                    'BENGEEP',
55                    'BENGGEP',
56                    'BENGPEP',
57                    'BENGMEP',
58                    )
[1100]59s_brain = res[0]
[1255]60info['error'] = None
[1210]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
[1249]65info['level']=s_brain.level
[1474]66info['verdict']=getattr(s_brain,"verdict","N/A")
[1210]67
[1474]68
[1100]69students_object = context.portal_url.getPortalObject().campus.students
70student = getattr(students_object, student_id)
71info['id'] = student_id
72info['student'] = student
[1178]73review_state = info['review_state'] = wf.getInfoFor(student,'review_state',None)
74booking_allowed = False
[1359]75if review_state in ('cleared_and_validated','returning','school_fee_paid','courses_registered', 'courses_validated',):
76    booking_allowed = True
[1726]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",)
[1179]82info['booking_allowed'] = booking_allowed
[1178]83if not booking_allowed:
[1320]84    info['acco'] = None
[1178]85    return info
[1100]86acco_id = 'accommodation_2006'
87acco = getattr(student,acco_id,None)
88info['acco'] = acco
89info['acco_id'] = acco_id
[1178]90bt = 're'
[1100]91if acco is not None:
92    info['acco_doc'] = acco.getContent()
93    info['acco_review_state'] = wf.getInfoFor(acco,'review_state',None)
94d = {}
[1178]95if review_state == "cleared_and_validated":
96    bt = 'fr'
[1204]97elif int(s_brain.level) < 300:
[1178]98    bt = 're'
99else:
100    res = context.portal_catalog(portal_type = "Certificate", id = s_brain.course)
101    if res:
102        c_brain = res[0]
[1205]103        #from Products.zdb import set_trace; set_trace()
104        certificate = c_brain.getObject().getContent()
[1255]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:
[1256]111            studentlevel = int(s_brain.level)
[1255]112        except:
113            info["error"] = '"no level for","%s"' % s_brain.getId
114            return info
115        if studentlevel >= certlevel:
[1178]116            bt = "fi"
[1100]117d['sex'] = 'male'
118if s_brain.sex:
119    d['sex'] = 'female'
120if s_brain.course in ekehuan_certificates:
121    bt += "_ekenhuan"
[1117]122elif s_brain.course in pti_certificates:
123    bt += "_pti"
[1181]124elif s_brain.faculty in ('MED') and int(s_brain.level) >= 400:
[1178]125    bt += "_med"
[1161]126
[1210]127info['sex']=d['sex']
128
129
[1100]130d['bt'] = bt
131#from Products.zdb import set_trace
132#set_trace()
[1161]133student_status = "%(sex)s_%(bt)s" % d
[1100]134info['student_status'] = student_status
135return info
[1320]136
Note: See TracBrowser for help on using the repository browser.