source: WAeUP_SRP/branches/joachim-event-branch/skins/waeup_student/getStudentFolderInfo.py @ 2348

Last change on this file since 2348 was 1596, checked in by joachim, 18 years ago

merged changes from trunk to joachim-event-branch

  • Property svn:keywords set to Id
File size: 3.5 KB
RevLine 
[1596]1## Script (Python) "getStudentFolderInfo"
[1185]2##bind container=container
3##bind context=context
4##bind namespace=
5##bind script=script
6##bind subpath=traverse_subpath
7##parameters=with_items=None
8##title=
9##
10# $Id: getStudentFolderInfo.py 1596 2007-03-19 21:45:44Z joachim $
11"""
12return Info about the current Student
13"""
14request = context.REQUEST
15form = request.form
16fget = form.get
17wf = context.portal_workflow
18mtool = context.portal_membership
19member = mtool.getAuthenticatedMember()
20path_info = request.get('PATH_INFO').split('/')
21
22import logging
[1596]23logger = logging.getLogger('Skins.getStudentFolderInfo')
[1185]24
25
26info = {}
27member_id = str(member)
[1243]28#from Products.zdb import set_trace;set_trace()
[1185]29is_student = info['is_student'] = context.isStudent()
30is_staff = info['is_staff'] = context.isStaff()
31is_sectionofficer = info['is_sectionofficer'] = context.isSectionOfficer()
32while True:
33    if mtool.isAnonymousUser():
34        return None
35    requested_id = context.getStudentId()
36    if not is_student and requested_id:
37        student_id = requested_id
38        break
39    if member_id != requested_id:
[1596]40        logger.info('%s tried to access %s' % (member_id,requested_id))
[1185]41        student_id = member_id
42        mtool.assertViewable(context)
43        break
44    student_id = member_id
45    break
[1431]46student_path_root = "%s/campus/students/%s" % (context.portal_url.getPortalPath(),student_id)
47student_path = "%s/campus/students/%s" % (context.portal_url(),student_id)
[1185]48res = context.students_catalog(id = student_id)
49if not res:
50    return None
51st_brain = res[0]
52#from Products.zdb import set_trace;set_trace()
53for field in context.students_catalog.schema():
54    info[field] = getattr(st_brain,field)
55res = context.portal_catalog(portal_type='Student',id = student_id)
56if res:
57    info['review_state'] = res[0].review_state
[1359]58
[1422]59info['session'] = False
[1423]60if st_brain.matric_no:
[1422]61    res = context.results_import(matric_no = st_brain.matric_no)
62    if res:
63       info['session'] = True
64
[1472]65
[1185]66info['id'] = student_id
67items = []
68s_edit_links = {'StudentApplication': 'application_edit_form',
69              'StudentAccommodation': 'reserve_accommodation',
70              'StudentClearance': 'clearance_edit_form',
71              'StudentPersonal': 'personal_edit_form',
72              }
73s_view_links = {'StudentApplication': 'application_view',
74              'StudentAccommodation': 'accommodation_view',
75              'StudentClearance': 'clearance_view',
76              'StudentPersonal': 'personal_view',
77              'StudentStudyCourse': 'study_course_view',
[1243]78              'PaymentsFolder': 'payments_view',
[1185]79              'StudentPume': 'pume_view',
80              }
[1431]81sos = context.portal_catalog(container_path=student_path_root)
[1185]82for so in sos:
83    row = {}
84    row['id'] = so.getId
85    row['title'] = so.Title
86    url = row['url'] = "%s/%s" % (student_path,so.getId)
87    row['type'] = so.portal_type
88    review_state = row['review_state'] = so.review_state
[1472]89    row['is_editable'] = (is_student and review_state == "opened") or is_sectionofficer
[1185]90    sv_link = s_view_links.get(so.portal_type,None) or "waeup_document_view"
91    row['s_view_link'] = "%s/%s" % (url,sv_link)
92    se_link = s_edit_links.get(so.portal_type,None)
93    row['s_edit_link'] = None
94    if se_link:
95        row['s_edit_link'] = "%s/%s" % (url,se_link)
96    row['display'] = review_state in ('opened','closed','bed_reserved','maintenance_fee_paid',)\
[1320]97                    and so.portal_type not in  ('StudentPume','StudentAccommodation','PaymentsFolder',) or\
[1185]98                    so.portal_type == 'StudentStudyCourse'
99    items.append(row)
100info['items'] = items
[1214]101info['member'] = member
[1185]102return info
[1258]103
Note: See TracBrowser for help on using the repository browser.