source: WAeUP_SRP/trunk/skins/waeup_student/reserve_accommodation.py @ 1255

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

increaselevels

  • Property svn:keywords set to Id
File size: 4.4 KB
Line 
1##parameters=REQUEST
2# $Id: reserve_accommodation.py 1255 2007-01-10 00:24:40Z joachim $
3"""
4process the the accommodation reservation
5"""
6import DateTime
7current = DateTime.DateTime()
8pr = context.portal_registration
9wftool = context.portal_workflow
10lt = context.portal_layouts
11info = context.getAccommodationInfo()
12
13import logging
14logger = logging.getLogger('Student.Accommodation.Reserve')
15
16#if info is None:
17#    return context.REQUEST.RESPONSE.redirect("%s/srp_anonymous_view" % context.portal_url())
18
19if info is None:
20    member_id = str(context.portal_membership.getAuthenticatedMember())
21    logger.info('"%s","tried to reserve accommodation"' % (member_id))
22    return context.REQUEST.RESPONSE.redirect("%s/srp_invalid_access" % context.portal_url())
23
24mode = 'create'
25if not info['booking_allowed']:
26    return context.REQUEST.RESPONSE.redirect("%s/no_booking_allowed" % info['student'].absolute_url())
27student = info['student']
28acco_id = info['acco_id']
29session = acco_id[-4:]
30validate = REQUEST.has_key("cpsdocument_create_button")
31if info.has_key('acco') and info['acco']:
32    validate = REQUEST.has_key("cpsdocument_edit_button")
33    if info['acco_review_state'] == "maintenance_fee_paid":
34        return context.REQUEST.RESPONSE.redirect("%s/accommodation_view" % info['acco'].absolute_url())
35    else:
36        mode = 'edit'
37d = {}
38button = "Book"
39if mode == 'edit':
40    d['acco_res_date'] = info['acco_doc'].acco_res_date
41    d['acco_res_sc_pin'] = info['acco_doc'].acco_res_sc_pin
42    d['student_status'] = info['acco_doc'].student_status
43    d['bed'] = info['acco_doc'].bed
44    d['session'] = info['acco_doc'].session
45    button = "Pay Maintainance Fee"
46res,psm,ds = lt.renderLayout(layout_id= 'student_accommodation_fe',
47                      schema_id= 'student_accommodation',
48                      context=context,
49                      mapping=validate and REQUEST,
50                      ob=d,
51                      layout_mode=mode,
52                      formaction = "reserve_accommodation",
53                      button = button
54                      )
55if psm == 'invalid' or info['error'] is not None:
56    member_id = str(context.portal_membership.getAuthenticatedMember())
57    logger.info('"%s", %s' % (member_id,info['error'] ))
58    if psm == 'invalid':
59        psm = "please correct your input"
60    else:
61        psm = "Error in Data, unable to reserve bed."
62    return context.accommodation_pin_edit_form(rendered = res,
63                                 #psm = "%s, %s" % (psm,ds),
64                                 mode = mode,
65                                 ds = ds,
66                                 )
67elif psm == '':
68    return context.accommodation_pin_edit_form(rendered = res,
69                                 psm = None,
70                                 mode = mode,
71                                 ds = ds,
72                                 )
73elif psm == 'valid':
74    s_id = ds.get('s_id')
75    if mode == 'create':
76        pin = str(ds.get('acco_res_sc_pin'))
77        pa = context.portal_accommodation
78        code,bed = pa.searchAndReserveBed(s_id,"%s" % (info['student_status']))
79        #code,bed = pa.searchAndReserveBed(s_id,"%s_%s" % (info['sex'],ds.get('student_status')))
80        if code < 0:
81            return context.accommodation_pin_edit_form(rendered = res,
82                                 psm = "%s bed type=%s" % (bed,info['student_status']),
83                                 mode = mode,
84                                 ds = ds,
85                                 )
86        student.invokeFactory('StudentAccommodation',acco_id)
87        acco = getattr(student,acco_id)
88        acco_info = context.waeup_tool.getAccommodationInfo(bed)
89        ds.set('acco_maint_code', acco_info.get('maintenance_code'))
90        ds.set('acco_maint_fee', acco_info.get('maintenance_fee'))
91        ds.set('acco_res_date', current)
92        ds.set('bed', bed)
93        ds.set('session', session)
94        ds.set('student_status',info['student_status'])
95        acco.getContent().edit(mapping=ds)
96        #wftool.doActionFor(acco,'pay_maintenance_fee',dest_container=acco)
97        return context.REQUEST.RESPONSE.redirect("%s/reserve_accommodation" % student.absolute_url())
98pin = str(ds.get('acco_main_sc_pin'))
99pp = context.portal_pins
100acco = getattr(student,acco_id)
101ds.set('acco_maint_date', current)
102acco.getContent().edit(mapping=ds)
103wftool.doActionFor(acco,'pay_maintenance_fee',dest_container=acco)
104return context.REQUEST.RESPONSE.redirect("%s/accommodation_view" % student.absolute_url())
Note: See TracBrowser for help on using the repository browser.