source: WAeUP_SRP/base/skins/waeup_epayment/getPaymentsFolderInfo.py @ 2458

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

rebuild getNextInfo.py completely
fetch session from portal properties.xml
change all scripts using getSessionId
remove StudentCourseResult? relevant code from event services
make pay_by_sc.py and interswitch_cb.py work (rebuild both)

  • Property svn:keywords set to Id
File size: 3.8 KB
RevLine 
[1568]1## Script (Python) "getPaymentsFolderInfo"
[1238]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: getPaymentsFolderInfo.py 2454 2007-10-27 21:53:04Z henrik $
11"""
12Info for the PaymentsFolder
13"""
[1783]14
15mtool = context.portal_membership
16if mtool.isAnonymousUser():
17    return None
[1845]18try:
19    from Products.zdb import set_trace
20except:
21    def set_trace():
22        pass
[1783]23
24
[1568]25#import logging
26#logger = logging.getLogger('Skins.getPaymentsFolderInfo')
[1661]27def cmp_id(a,b):
28    s1 = "%(id)s" % a
29    s2 = "%(id)s" % b
30    if s1 == s2:
31        return 0
32    if s1 > s2:
33        return 1
34    return -1
[1568]35
[1238]36import DateTime
37request = context.REQUEST
38students = context.portal_url.getPortalObject().campus.students
39student_id = context.getStudentId()
40if student_id is None:
41    return context.REQUEST.RESPONSE.redirect("%s/srp_anonymous_view" % context.portal_url())
[1938]42student = getattr(students,student_id)
[1338]43s_brain = context.students_catalog(id = student_id)[0]
[1427]44
[1238]45payments = []
[1283]46#from Products.zdb import set_trace;set_trace()
[1427]47
[1238]48info = {}
49is_so = info['is_so'] = context.isSectionOfficer()
[2151]50is_student = info['is_student'] = context.isStudent()
51info['student_name'] = s_brain.name
[1946]52info['query_url'] = "https://webpay.interswitchng.com/paydirect/services/TransactionQueryURL.aspx"
[2151]53review_state = info['review_state'] = s_brain.review_state
[2153]54parttime = s_brain.mode.endswith('_pt')
55fulltime = s_brain.mode.endswith('_ft')
56online_payment = False
57sc_payment = False
[2249]58
59#if review_state == 'cleared_and_validated' or (parttime and review_state == 'returning'):
60#    online_payment = True
61#elif fulltime and review_state == 'returning':
62#    sc_payment = True
63
64if review_state == 'cleared_and_validated':
[2151]65    online_payment = True
[2249]66elif review_state == 'returning':
[2153]67    sc_payment = True
[2249]68
[2151]69info['online_payment'] = online_payment
[2153]70info['sc_payment'] = sc_payment
[2165]71info['prod_id'] = '61'
[1758]72session = s_brain.session
[2454]73next_info = context.getNextInfo(s_brain)
74info['next_session'] = next_info['next_session_id']
75info['next_session_str'] = next_info['next_session_str']
[1427]76
[1238]77info['student_name'] = s_brain.name
[1427]78payments_path = "%s/campus/students/%s/payments" % (context.portal_url.getPortalPath(),student_id)
79sos = context.portal_catalog(container_path=payments_path)
80info['is_so'] = is_so
81
82for so in sos:
83    row = {}
84    row['id'] = so.getId
85    row['title'] = so.Title
86    url = row['url'] = "%s/%s" % (payments_path,so.getId)
[1944]87    so_doc = context.restrictedTraverse(url,default=None).getContent()
[1427]88    row['type'] = so.portal_type
89    review_state = row['review_state'] = so.review_state
[1944]90    if so_doc.type_description.startswith('School Fee'):
[1427]91        row['is_approvable'] = is_so and (review_state == "opened") and info['review_state'] == 'cleared_and_validated'
92    else:
93        row['is_approvable'] = is_so and (review_state == "opened")
[1938]94    row['is_requeryable'] = False
[1944]95    #set_trace()
96    row['resp_desc'] = getattr(so_doc,'resp_desc','no response')
97    row['trans_ref'] = getattr(so_doc,'order_id','')
98    if so_doc.type_description.startswith('School Fee'):
[1952]99        if review_state == 'opened' and info['review_state'] == 'cleared_and_validated' and hasattr(so_doc, 'order_id') and not so_doc.resp_code:
[1938]100            row['is_requeryable'] = True
[1944]101            row['callback_url'] = "%s/payments/%s/interswitch_cb" % (student.absolute_url(),
102                                                            so.getId)
103            href = '%(query_url)s' % info
104            href += '?transRef=%(trans_ref)s' % row
105            href += '&prodID=%(prod_id)s' % info
106            href += '&redirectURL=%(callback_url)s' % row
107            row['href'] = href
108    if (review_state == "closed") and so_doc.resp_code in ('SC','00','AP','IP',):
[1427]109        row['confirmed'] = 'active'
110    else:
[1431]111        row['confirmed'] = 'unsuccessful'
[1427]112    payments.append(row)
113
[1661]114payments.sort(cmp_id)
[1238]115info['payments'] = payments
116return info
[1431]117
Note: See TracBrowser for help on using the repository browser.