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

Last change on this file since 2466 was 2459, checked in by Henrik Bettermann, 17 years ago

show payment button only if verdict, session and level are not empty
pay_by_sc.py: open study_course to fill new level and session after payment

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