source: WAeUP_SRP/trunk/skins/waeup_epayment/request_gown.py @ 4294

Last change on this file since 4294 was 3744, checked in by Henrik Bettermann, 16 years ago

enable selecting session for gown hire

File size: 3.7 KB
RevLine 
[3736]1## Script (Python) "request_gown"
2##bind container=container
3##bind context=context
4##bind namespace=
5##bind script=script
6##bind subpath=traverse_subpath
7##parameters=
8##title=
9##
10# $Id: request_gown.py 3256 2008-02-29 06:51:46Z henrik $
11"""
12pay online
13"""
14import logging
15from urllib import urlencode
16logger = logging.getLogger('Skins.request_gown')
17import DateTime
18try:
19    from Products.zdb import set_trace
20except:
21    def set_trace():
22        pass
23
24if context.portal_membership.isAnonymousUser():
25    return None
26wftool = context.portal_workflow
27lt = context.portal_layouts
28request = context.REQUEST
29students = context.portal_url.getPortalObject().campus.students
30student_id = context.getStudentId()
31if student_id is None:
32    return request.RESPONSE.redirect("%s/srp_anonymous_view" % context.portal_url())
33
34student = getattr(students,student_id)
35student_record = context.students_catalog.getRecordByKey(student_id)
36
[3744]37#session = context.getSessionId()
38
[3736]39validate = request.has_key("cpsdocument_create_button")
40res,psm,ds = lt.renderLayout(layout_id= 'student_gown',
41                      schema_id= 'payment',
42                      context=context,
43                      mapping=validate and request,
44                      ob={},
45                      layout_mode="create",
46                      formaction = "request_gown",
47                      button = 'Pay',
48                      commit = False,
49                      )
50if psm == 'invalid':
51    psm = 'Please correct your errors!'
52    return context.request_gown_form(rendered = res,
53                                 psm = psm,
54                                 mode = 'edit',
55                                 #session_str = session[1],
56                                 ds = ds,
57                                 )
58elif psm == '':
59    return context.request_gown_form(rendered = res,
60                                 psm = None,
61                                 mode = 'edit',
62                                 #session_str = session[1],
63                                 ds = ds,
64                                 )
65elif psm == 'valid':
66    pass
67if "payments" not in student.objectIds():
68    student.invokeFactory('PaymentsFolder','payments')
69    payments = getattr(student,'payments')
70    d = {}
71    d['Title'] = 'Payments'
72    payments.getContent().edit(mapping=d)
73    wftool.doActionFor(payments,'open')
74else:
75    payments = getattr(student,'payments')
76#from Products.zdb import set_trace; set_trace()
77info = {}
78p_id = "p%s" % ds.get('pin_n')
79pin = str(ds.get('pin'))
[3744]80session = str(ds.get('session'))
81
82#from Products.zdb import set_trace; set_trace()
83
[3736]84try:
85    cost = context.portal_pins(pin="".join(pin.split('-')))[0].cost
86except:
87    cost = "n/a"
88try:
89    x = float(cost)
90except:
91    cost = "n/a"
92
93if not hasattr(payments,p_id):
94    now = DateTime.DateTime()
95    info['date'] = now
96    info['amount'] = cost
97    pin = info['order_id'] = "%s" % pin
98    #info['type_code'] = "%s" % pin  #type_code is redundant and will be removed soon
99    info['type_description'] = 'Gown Hire'
100    info['type'] = 'sc'
101    info['status'] = 'paid'
[3744]102    #info['session_id'] = session[0]
103    info['session_id'] = session
[3736]104    info['item'] = ''
105    info['category'] = 'gown'
106    info['resp_code'] = "SC"
107    info['resp_desc'] = "SC Payment Successful"
108    payments.invokeFactory('Payment', p_id)
109    payment = getattr(payments,p_id)
110    wftool = context.portal_workflow
111    wftool.doActionFor(payment,'open')
112    payment.getContent().edit(mapping=info)
113    wftool.doActionFor(payment,'close')
114
115
116    logger.info('%s paid gown by scratch card' % student_id)
117else:
118    logger.info('%s repeatedly paid gown by scratch card' % student_id)
119url = "%s/payments" % (student.absolute_url())
120request.RESPONSE.redirect(url)
121
Note: See TracBrowser for help on using the repository browser.