Hello all,
I have created:
- a Controller Page
Template
- a Controller
Validator script and,
- a Controller
Python script
I am trying to create a form
whose values are used by a script to:
- query a separate
reporting system
- generate a .pdf
document with the resulting report and,
- post the contents of
the .pdf to a results page
I cannot seem to figure out
how to generate the results page. Could anyone shed some light on this?
You will note some poor
python code practices (especially in the validator script) which I apologize
for (too hurried), so please be forgiving…
Thanking you in advance,
Chris Nethery
My code is below. So far, I
have the following:
------------------------------
PMA (Controller Page
Template)
------------------------------
<html>
<head>
<title
tal:content="template/title">The title</title>
</head>
<body
tal:define="errors options/state/getErrors">
<h2
tal:content="template/title_or_id">Portfolio Manager
Assignment</h2>
<form
method="POST" tal:attributes="action string:${here/absolute_url}/${template/id};">
<p
class="error_message" tal:define="err errors/n|nothing"
tal:condition="err"><b tal:content="err"
/></p>
<p>Enter query
parameters:</p><br>
<table>
<tr><th>Portfolio</th>
<td><input
name="portfolio" size="10"
value=""></td>
</tr>
<tr><th>Group Name</th>
<td><input
name="group_name" size="10"
value=""></td>
</tr>
<tr><th>Run
Date (mmddyy)</th>
<td><input
name="run_date" size="10" value=""></td>
</tr>
<tr><th>From
Date (mmddyy)</th>
<td><input
name="from_date" size="10"
value=""></td>
</tr>
<tr><th>To
Date (mmddyy)</th>
<td><input
name="to_date" size="10" value=""></td>
</tr>
<tr>
<td colspan=2
align=center><input type="SUBMIT"
name="form.button.submit" value="OK"></td>
<input
type="hidden" name="form.submitted" value="1"
/>
</tr>
</table>
</form>
</body>
</html>
-------------------------------------------
PMAValidators (Controller
Validator Script)
-------------------------------------------
portfolio = context.REQUEST.get('portfolio',
None)
run_date =
context.REQUEST.get('run_date', None)
from_date =
context.REQUEST.get('from_date', None)
to_date =
context.REQUEST.get('to_date', None)
if not portfolio:
state.setError('portfolio', 'Please enter a portfolio')
if state.getErrors():
state.setStatus('failure')
return
state.set(portal_status_message='Please correct the errors shown')
if not run_date:
state.setError('run_date',
'Please enter a run date')
if state.getErrors():
state.setStatus('failure')
return
state.set(portal_status_message='Please correct the errors shown')
if not from_date:
state.setError('from_date',
'Please enter a "from" date')
if state.getErrors():
state.setStatus('failure')
return
state.set(portal_status_message='Please correct the errors shown')
if not to_date:
state.setError('to_date',
'Please enter a "to" date')
if state.getErrors():
state.setStatus('failure')
return
state.set(portal_status_message='Please correct the errors shown')
return state
------------------------------------
PMAScript (Controller Python
script)
------------------------------------
import os
import string
import sys
# Get value(s) from the
REQUEST
portfolio =
context.REQUEST.get('portfolio')
run_date =
context.REQUEST.get('run_date')
from_date =
context.REQUEST.get('from_date')
to_date =
context.REQUEST.get('to_date')
#Create .pdf
y = stuff
x = os.system(y)
### What now? ###
### state.setNextAction ?
###
return state