Commit 5ec6b2c9 authored by Jérome Perrin's avatar Jérome Perrin

2009-09-12 Jérome

* Allow rendering of any form / printout in deferred mode

git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@31182 20353a03-c40f-0410-a6d1-a30d3c3de9de
parent d93bc11c
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<tuple>
<global name="PythonScript" module="Products.PythonScripts.PythonScript"/>
<tuple/>
</tuple>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>Script_magic</string> </key>
<value> <int>3</int> </value>
</item>
<item>
<key> <string>_bind_names</string> </key>
<value>
<object>
<klass>
<global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key> <string>_asgns</string> </key>
<value>
<dictionary>
<item>
<key> <string>name_container</string> </key>
<value> <string>container</string> </value>
</item>
<item>
<key> <string>name_context</string> </key>
<value> <string>context</string> </value>
</item>
<item>
<key> <string>name_m_self</string> </key>
<value> <string>script</string> </value>
</item>
<item>
<key> <string>name_subpath</string> </key>
<value> <string>traverse_subpath</string> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>_body</string> </key>
<value> <string>from Products.ERP5Type.Message import translateString\n
portal = context.getPortalObject()\n
request = portal.REQUEST\n
format = request.get(\'format\', \'\')\n
skin_name = request[\'deferred_portal_skin\']\n
\n
tag = \'active-report-wrapped-%s\' % random.randint(0, 1000)\n
priority = 3 # TODO: site preference\n
\n
person_value = portal.ERP5Site_getAuthenticatedMemberPersonValue()\n
if person_value is None:\n
portal.changeSkin(None)\n
return context.Base_redirect(\'view\', keep_items=dict(\n
portal_status_message=translateString(\n
"No person found for your user")))\n
\n
if person_value.getDefaultEmailText(\'\') in (\'\', None):\n
portal.changeSkin(None)\n
return context.Base_redirect(\'view\', keep_items=dict(\n
portal_status_message=translateString(\n
"You haven\'t defined your email address")))\n
\n
user_name = context.portal_membership.getAuthenticatedMember().getUserName()\n
\n
# save request parameters\n
# XXX we exclude some reserved names in a very ad hoc way\n
request_form = dict()\n
for k, v in request.form.items():\n
if k not in (\'TraversalRequestNameStack\', \'AUTHENTICATED_USER\', \'URL\',\n
\'SERVER_URL\', \'AUTHENTICATION_PATH\', \'USER_PREF_LANGUAGES\', \'PARENTS\',\n
\'PUBLISHED\', \'AcceptLanguage\', \'AcceptCharset\', \'RESPONSE\',\n
\'ACTUAL_URL\'):\n
# XXX proxy fields stores a cache in request.other that cannot be pickled\n
if k.startswith(\'field__proxyfield\'):\n
continue\n
# Remove FileUpload parameters\n
elif getattr(v, \'headers\', \'\'):\n
continue\n
request_form[k] = v\n
\n
localizer_language = portal.Localizer.get_selected_language()\n
\n
activity_context = context\n
if activity_context == portal:\n
# portal is not an active object\n
activity_context = portal.portal_simulation\n
\n
\n
params = dict()\n
form = getattr(context, deferred_style_dialog_method)\n
if hasattr(form, \'ZScriptHTML_tryParams\'):\n
# Some actions are wrapped by a script.\n
# In that case we look at script signature to pass them the sames\n
for param in form.ZScriptHTML_tryParams():\n
params[param] = request.get(param)\n
else:\n
params[\'format\'] = format\n
\n
activity_context.activate(\n
activity=\'SQLQueue\', tag=tag, priority=priority).Base_renderSimpleView(\n
localizer_language=localizer_language,\n
skin_name=skin_name,\n
request_form=request_form,\n
deferred_style_dialog_method=deferred_style_dialog_method,\n
user_name=user_name,\n
params=params,\n
)\n
\n
context.activate(activity=\'SQLQueue\', after_tag=tag).getTitle()\n
\n
portal.changeSkin(None)\n
return context.Base_redirect(\'view\', keep_items=dict(\n
portal_status_message=translateString("Report Started")))\n
</string> </value>
</item>
<item>
<key> <string>_code</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>_params</string> </key>
<value> <string>deferred_style_dialog_method, form_id, **kw</string> </value>
</item>
<item>
<key> <string>errors</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>func_code</string> </key>
<value>
<object>
<klass>
<global name="FuncCode" module="Shared.DC.Scripts.Signature"/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key> <string>co_argcount</string> </key>
<value> <int>2</int> </value>
</item>
<item>
<key> <string>co_varnames</string> </key>
<value>
<tuple>
<string>deferred_style_dialog_method</string>
<string>form_id</string>
<string>kw</string>
<string>Products.ERP5Type.Message</string>
<string>translateString</string>
<string>_getattr_</string>
<string>context</string>
<string>portal</string>
<string>request</string>
<string>format</string>
<string>_getitem_</string>
<string>skin_name</string>
<string>random</string>
<string>tag</string>
<string>priority</string>
<string>person_value</string>
<string>None</string>
<string>dict</string>
<string>user_name</string>
<string>request_form</string>
<string>_getiter_</string>
<string>k</string>
<string>v</string>
<string>getattr</string>
<string>_write_</string>
<string>localizer_language</string>
<string>activity_context</string>
<string>params</string>
<string>form</string>
<string>hasattr</string>
<string>param</string>
</tuple>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>func_defaults</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>Base_activateSimpleView</string> </value>
</item>
<item>
<key> <string>warnings</string> </key>
<value>
<tuple/>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<tuple>
<global name="PythonScript" module="Products.PythonScripts.PythonScript"/>
<tuple/>
</tuple>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>Script_magic</string> </key>
<value> <int>3</int> </value>
</item>
<item>
<key> <string>_bind_names</string> </key>
<value>
<object>
<klass>
<global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key> <string>_asgns</string> </key>
<value>
<dictionary>
<item>
<key> <string>name_container</string> </key>
<value> <string>container</string> </value>
</item>
<item>
<key> <string>name_context</string> </key>
<value> <string>context</string> </value>
</item>
<item>
<key> <string>name_m_self</string> </key>
<value> <string>script</string> </value>
</item>
<item>
<key> <string>name_subpath</string> </key>
<value> <string>traverse_subpath</string> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>_body</string> </key>
<value> <string># Render a "normal" form or an OOo template in an activity and send it by email\n
from Products.ERP5Type.Message import translateString\n
portal = context.getPortalObject()\n
request = portal.REQUEST\n
request.form.update(request_form)\n
\n
if skin_name and skin_name != \'None\': # make_query serializes None as \'None\'\n
portal.portal_skins.changeSkin(skin_name)\n
\n
report_data = getattr(context, deferred_style_dialog_method)(**params)\n
\n
attachment_name = [x[len(\'filename=\'):] for x in (request.RESPONSE.getHeader(\n
\'content-disposition\') or \'\').split(\';\')\n
if x.startswith(\'filename=\')][0]\n
if attachment_name.startswith(\'"\'):\n
attachment_name = attachment_name[1:]\n
if attachment_name.endswith(\'"\'):\n
attachment_name = attachment_name[:-1]\n
attachment_list = (\n
{\'mime_type\': (request.RESPONSE.getHeader(\'content-type\') or \'application/octet-stream;\').split(\';\')[0],\n
\'content\': \'%s\' % report_data,\n
\'name\': attachment_name},)\n
\n
# XXX Use notification message to improve message content\n
portal.portal_notifications.sendMessage(\n
recipient=user_name,\n
subject=attachment_name.rsplit(\'.\', 1)[0],\n
message=str(translateString(\'Your report is attached.\\n\')),\n
message_text_format=\'text/plain\',\n
notifier_list=(\'Mail Message\',),\n
store_as_event=False,\n
attachment_list=attachment_list,\n
)\n
</string> </value>
</item>
<item>
<key> <string>_code</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>_params</string> </key>
<value> <string>localizer_language, skin_name, request_form, deferred_style_dialog_method, user_name, params</string> </value>
</item>
<item>
<key> <string>errors</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>func_code</string> </key>
<value>
<object>
<klass>
<global name="FuncCode" module="Shared.DC.Scripts.Signature"/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key> <string>co_argcount</string> </key>
<value> <int>6</int> </value>
</item>
<item>
<key> <string>co_varnames</string> </key>
<value>
<tuple>
<string>localizer_language</string>
<string>skin_name</string>
<string>request_form</string>
<string>deferred_style_dialog_method</string>
<string>user_name</string>
<string>params</string>
<string>Products.ERP5Type.Message</string>
<string>translateString</string>
<string>_getattr_</string>
<string>context</string>
<string>portal</string>
<string>request</string>
<string>_apply_</string>
<string>getattr</string>
<string>report_data</string>
<string>_getitem_</string>
<string>append</string>
<string>$append0</string>
<string>_getiter_</string>
<string>x</string>
<string>len</string>
<string>attachment_name</string>
<string>attachment_list</string>
<string>str</string>
<string>False</string>
</tuple>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>func_defaults</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>Base_renderSimpleView</string> </value>
</item>
<item>
<key> <string>warnings</string> </key>
<value>
<tuple/>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
2009-09-12 Jérome
* Allow rendering of any form / printout in deferred mode
\ No newline at end of file
67
\ No newline at end of file
74
\ No newline at end of file
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment