source: WAeUP_SRP/base/skins/waeup_epayment/pay_by_sc.py @ 2451

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

new getNextInfo used in pay_by_sc

  • Property svn:keywords set to Id
File size: 4.3 KB
RevLine 
[1274]1## Script (Python) "pay_by_sc"
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: pay_by_sc.py 2451 2007-10-27 14:26:41Z joachim $
11"""
12pay online
13"""
14import logging
15from urllib import urlencode
[1568]16logger = logging.getLogger('Skins.pay_by_sc')
[1274]17import DateTime
[1758]18try:
19    from Products.zdb import set_trace
20except:
21    def set_trace():
22        pass
[1365]23
24if context.portal_membership.isAnonymousUser():
25    return None
26
[1274]27lt = context.portal_layouts
28request = context.REQUEST
29students = context.portal_url.getPortalObject().campus.students
30student_id = context.getStudentId()
31if student_id is None:
[1283]32    return request.RESPONSE.redirect("%s/srp_anonymous_view" % context.portal_url())
[1274]33
34student = getattr(students,student_id)
[1758]35s_brain = context.students_catalog(id=student_id)[0]
[2451]36next_info = context.getNextInfo(s_brain)
37next_session_id = next_info['next_session_id']
38next_session_str = next_info['next_session_str']
39next_level_id = next_info['next_level_id']
40next_transition = next_info['next_transition']
41study_course = getattr(student,'study_course')
42study_course.getContent().edit(mapping= {'current_level': next_level_id,
43                                         'current_session': next_session_id,})
44if next_transition:
45    wftool.doActionFor(student,next_transition)
46
47# session = s_brain.session
48# next_session, next_session_str = context.getNextSessionId(session)
49# validate = request.has_key("cpsdocument_create_button")
[1274]50res,psm,ds = lt.renderLayout(layout_id= 'student_schoolfee',
[1376]51                      schema_id= 'payment',
[1274]52                      context=context,
[1283]53                      mapping=validate and request,
[1274]54                      ob={},
55                      layout_mode="create",
56                      formaction = "pay_by_sc",
[1856]57                      button = 'Pay',
58                      commit = False,
[1274]59                      )
60if psm == 'invalid':
61    psm = 'Please correct your errors!'
62    return context.pay_by_sc_form(rendered = res,
63                                 psm = psm,
64                                 mode = 'edit',
[1758]65                                 next_session_str = next_session_str,
[1274]66                                 ds = ds,
67                                 )
68elif psm == '':
69    return context.pay_by_sc_form(rendered = res,
70                                 psm = None,
71                                 mode = 'edit',
[1758]72                                 next_session_str = next_session_str,
[1274]73                                 ds = ds,
74                                 )
75elif psm == 'valid':
76    pass
77if "payments" not in student.objectIds():
78    student.invokeFactory('PaymentsFolder','payments')
79    payments = getattr(student,'payments')
80    d = {}
81    d['Title'] = 'Payments'
82    payments.getContent().edit(mapping=d)
83    wftool.doActionFor(payments,'open')
84else:
85    payments = getattr(student,'payments')
[1283]86#from Products.zdb import set_trace; set_trace()
[1274]87info = {}
[1283]88order_id = ds.get('pin_n')
[1274]89p_id = "p%s" % order_id
[2059]90pin = str(ds.get('pin'))
91try:
92    cost = context.portal_pins(pin="".join(pin.split('-')))[0].cost
93except:
94    cost = "n/a"
95try:
96    x = float(cost)
97except:
98    cost = "n/a"
[2153]99
[1390]100if not hasattr(payments,p_id):
101    now = DateTime.DateTime()
102    info['date'] = now
[2059]103    info['amount'] = cost
104    pin = info['order_id'] = "%s" % (pin)
[1390]105    info['type_code'] = "%s" % pin
[1758]106    info['type_description'] = 'School Fee for Session %s' % next_session_str
[1390]107    info['resp_code'] = "SC"
108    info['resp_desc'] = "SC Payment Successful"
109    payments.invokeFactory('Payment', p_id)
110    payment = getattr(payments,p_id)
111    wftool = context.portal_workflow
112    wftool.doActionFor(payment,'open')
113    payment.getContent().edit(mapping=info)
114    wftool.doActionFor(payment,'close')
[1771]115    if next_session == context.getSessionId()[-2:]:
[1758]116        wftool.doActionFor(student,'pay_school_fee')
[2135]117    else:
[1758]118        study_course = getattr(student,'study_course')
[1764]119        #wftool.doActionFor(study_course,'open')
[1758]120        study_course_doc = study_course.getContent()
[2135]121        next_level = "%s" % (int(s_brain.level) + 100)
[1758]122        study_course_doc.edit(mapping= {'current_level': next_level,
123                                        'current_session': next_session,})
[1568]124    logger.info('%s paid school fee by scratch card' % student_id)
[1390]125else:
[1568]126    logger.info('%s repeatedly paid school fee by scratch card' % student_id)
[1283]127url = "%s/payments" % (student.absolute_url())
[1274]128request.RESPONSE.redirect(url)
129
Note: See TracBrowser for help on using the repository browser.