source: WAeUP_SRP/base/skins/waeup_accommodation/getAccoHallInfo.py @ 3004

Last change on this file since 3004 was 2845, checked in by joachim, 17 years ago

add sort_id, additional fields in payment

  • Property svn:keywords set to Id
File size: 2.8 KB
Line 
1## Script (Python) "getAccoHallInfo"
2##bind container=container
3##bind context=context
4##bind namespace=
5##bind script=script
6##bind subpath=traverse_subpath
7##parameters=student=None
8##title=
9##
10# $Id: getAccoHallInfo.py 2845 2007-12-03 21:14:20Z joachim $
11"""
12return Info about a Accommodation Hall
13"""
14try:
15    from Products.zdb import set_trace
16except:
17    def set_trace():
18        pass
19   
20from Products.AdvancedQuery import Eq, Between, Le,In
21
22def cmp_bed(a,b):
23    if a['bed'] > b['bed']:
24        return 1
25    return -1
26
27request = context.REQUEST
28
29wf = context.portal_workflow
30path_info = request.get('PATH_INFO').split('/')
31mtool = context.portal_membership
32portal_accommodation = context.portal_accommodation
33aq_accommodation = portal_accommodation.evalAdvancedQuery
34info = {}
35#dep_id = request.get('PATH_TRANSLATED').split('/')[-2]
36dep_id = context.aq_parent.getId()
37info['action'] = "%s" % context.absolute_url()
38info['choosen_ids'] = request.get('ids',[])
39info['doc'] = context.getContent()
40bed_types = portal_accommodation.uniqueValuesFor('bed_type')
41bt_list = []
42bt_names =  context.getBedTypeNames()
43res = portal_accommodation.uniqueValuesFor('student')
44all_booked = [st for st in res if st and st != 'not_occupied']
45booked_list = []
46for bt in bed_types:
47    total = len(portal_accommodation(bed_type=bt,hall=context.getId()))
48    if total <= 1:
49        continue
50    booked = portal_accommodation.searchResults({'bed_type': bt,
51                                 'student':all_booked,
52                                 'hall': context.getId()})
53    bt_list.append({'name': bt_names[bt],
54                    'total': total,
55                    'reserved': len(booked),
56                    })
57    booked_list.extend(booked)
58# query = ~Eq('student','not_occupied')
59# beds = aq_accommodation(query,sortSpecs=('bed_type',))
60# bt_list = []
61# bt_names =  context.getBedTypeNames()
62# bt = 'xxx'
63# for bed in beds:
64#     if bt != bed.bed_type:
65#         bt = bed.bed_type
66#         total = len(aq_accommodation(Eq('bed_type',bt)))
67#         bt_list.append({'name': bt_names[bt],
68#                         'total': total,
69#                         'reserved': len(booked),
70#                        })
71     
72info['bed_types'] = bt_list
73res_list = []
74students_url = "%s/campus/students" % (context.portal_url())
75for sbrain in booked_list:
76    d = {}
77    st = sbrain.student
78    if not st:
79        continue
80    d['student'] = st
81    d['student_url'] ='%s/%s' % (students_url,st)
82    bed = context.getFormattedBed(sbrain.bed).split('/')
83    d['bed'] = " / ".join(bed[1:])
84    erg = context.students_catalog(id = st)
85    if erg:
86        sd = context.getFormattedStudentEntry(erg[0])
87        d.update(sd)
88    else:
89        #d['student'] = None
90        d['student_url'] = None
91        #d['bed'] = None
92        d['name'] = 'Student record removed'
93    res_list.append(d)
94res_list.sort(cmp_bed)
95info['reserved'] = res_list
96
97return info
Note: See TracBrowser for help on using the repository browser.