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

Last change on this file since 2459 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: 3.8 KB
Line 
1## Script (Python) "getPaymentsFolderInfo"
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 2459 2007-10-28 13:56:01Z henrik $
11"""
12Info for the PaymentsFolder
13"""
14
15mtool = context.portal_membership
16if mtool.isAnonymousUser():
17    return None
18try:
19    from Products.zdb import set_trace
20except:
21    def set_trace():
22        pass
23
24
25#import logging
26#logger = logging.getLogger('Skins.getPaymentsFolderInfo')
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
35
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())
42student = getattr(students,student_id)
43s_brain = context.students_catalog(id = student_id)[0]
44
45payments = []
46#from Products.zdb import set_trace;set_trace()
47
48info = {}
49is_so = info['is_so'] = context.isSectionOfficer()
50is_student = info['is_student'] = context.isStudent()
51info['student_name'] = s_brain.name
52info['query_url'] = "https://webpay.interswitchng.com/paydirect/services/TransactionQueryURL.aspx"
53review_state = info['review_state'] = s_brain.review_state
54parttime = s_brain.mode.endswith('_pt')
55fulltime = s_brain.mode.endswith('_ft')
56online_payment = False
57sc_payment = False
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
64info['online_payment'] = online_payment
65info['sc_payment'] = sc_payment
66info['prod_id'] = '61'
67session = s_brain.session
68next_info = context.getNextInfo(s_brain)
69info['next_session'] = next_info['next_session_id']
70info['next_session_str'] = next_info['next_session_str']
71
72if review_state == 'cleared_and_validated':
73    online_payment = True
74elif review_state == 'returning' and info['next_session'] != session:
75    sc_payment = True
76
77info['student_name'] = s_brain.name
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)
87    so_doc = context.restrictedTraverse(url,default=None).getContent()
88    row['type'] = so.portal_type
89    review_state = row['review_state'] = so.review_state
90    if so_doc.type_description.startswith('School Fee'):
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")
94    row['is_requeryable'] = False
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'):
99        if review_state == 'opened' and info['review_state'] == 'cleared_and_validated' and hasattr(so_doc, 'order_id') and not so_doc.resp_code:
100            row['is_requeryable'] = True
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',):
109        row['confirmed'] = 'active'
110    else:
111        row['confirmed'] = 'unsuccessful'
112    payments.append(row)
113
114payments.sort(cmp_id)
115info['payments'] = payments
116return info
117
Note: See TracBrowser for help on using the repository browser.