Commit 7995741c authored by Jérome Perrin's avatar Jérome Perrin

set a URL in request if we do not redirect, so that list_url in the Selection...

set a URL in request if we do not redirect, so that list_url in the Selection doesn't point to this script.

git-svn-id: 20353a03-c40f-0410-a6d1-a30d3c3de9de
parent 9a9f0fea
......@@ -66,12 +66,12 @@
<key> <string>_body</string> </key>
<value> <string># Updates attributes of an Zope document\n
# which is in a class inheriting from ERP5 Base\n
<value> <string>"""Generic method called when submitting a form in dialog mode.\n
Responsible for validating form data and redirecting to the form action.\n
from Products.Formulator.Errors import ValidationError, FormValidationError\n
from string import join\n
from ZTUtils import make_query\n
......@@ -92,7 +92,7 @@ if dialog_method == \'Base_configureSortOn\':\n
# * we got an import_file, \n
# * we got a listbox\n
# * a value is None or [] or (), because this is not supported by make_query\n
must_redirect = 0\n
cannot_redirect = 0\n
MARKER = []\n
......@@ -108,7 +108,9 @@ try:\n
form = getattr(context,dialog_id)\n
kw = {\'form_id\': form_id, \'selection_name\': selection_name , \'selection_index\': None} # Missing selection_index\n
kw = {\'form_id\': form_id,\n
\'selection_name\': selection_name,\n
\'selection_index\': None} # Missing selection_index\n
has_listbox = 0\n
for f in form.get_fields():\n
k =\n
......@@ -119,12 +121,12 @@ try:\n
k = k[len(prefix):]\n
kw[k] = v\n
if v in (None, [], ()) or hasattr(v, \'read\') :\n
must_redirect = 1\n
cannot_redirect = 1\n
if k in (\'import_file\', \'listbox\'):\n
if f.meta_type == \'ListBox\': has_listbox = 1\n
must_redirect = 1\n
cannot_redirect = 1\n
kw[k] = v\n
# Add some properties required by UI\n
md5_object_uid_list = getattr(request,\'md5_object_uid_list\',None)\n
......@@ -149,37 +151,39 @@ try:\n
if dialog_category == "object_search" :\n
context.portal_selections.setSelectionParamsFor(selection_name, kw)\n
# Redirect if possible, or call directly else\n
if must_redirect and dialog_category != "object_report" :\n
# if we want to change the portal_skin, we must redirect \n
# if we cannot redirect, then call the form directly.\n
# XXX we always redirect in report mode to make sure portal_skin\n
# parameter is taken into account by SkinTool.\n
if cannot_redirect and dialog_category != "object_report" :\n
dialog_form = getattr(context, dialog_method, None)\n
for k, v in kw.items() : \n
for k, v in kw.items() :\n
request.set(k, v)\n
context.log("Base_callDialogMethod : dialog_form", dialog_form)\n
# set the URL in request, so that we can immediatly call method\n
# that depend on it (eg. Show All). This is really related to\n
# current ListBox implementation which edit Selection\'s last_url\n
# with the content of REQUEST.URL\n
request.set(\'URL\', \'%s/%s\' % (context.absolute_url(), dialog_method))\n
return dialog_form(**kw)\n
# else fallback to url argument passing (we remove None values, as it doesn\'t work with make_query)\n
# Otherwise, prepare URL to redirect, passing arguments in the URL\n
# (we remove None values, as it doesn\'t work with make_query, which\n
# pass \'None\')\n
cleanedup_kw = {}\n
for k, v in kw.items() :\n
if v is not None : \n
if v is not None :\n
cleanedup_kw[k] = v\n
url_params_string = make_query(cleanedup_kw)\n
redirect_url = \'%s/%s?%s\' % ( context.absolute_url()\n
, dialog_method\n
, make_query(cleanedup_kw)\n
return request.RESPONSE.redirect( redirect_url )\n
except FormValidationError, validation_errors:\n
# Pack errors into the request\n
field_errors = form.ErrorFields(validation_errors)\n
request.set(\'field_errors\', field_errors)\n
return form(request)\n
if url_params_string != \'\':\n
redirect_url = \'%s/%s?%s\' % ( context.absolute_url()\n
, dialog_method\n
, url_params_string\n
redirect_url = \'%s/%s\' % ( context.absolute_url()\n
, dialog_method\n
return request.RESPONSE.redirect( redirect_url )\n
# vim: syntax=python\n
</string> </value>
......@@ -201,7 +205,7 @@ return request.RESPONSE.redirect( redirect_url )\n
<key> <string>_params</string> </key>
<value> <string>cancel_url,dialog_method,selection_name,dialog_id,dialog_category=\'\',form_id=\'view\',enable_pickle=0,**kw</string> </value>
<value> <string>cancel_url, dialog_method, selection_name, dialog_id, dialog_category=\'\', form_id=\'view\', enable_pickle=0, **kw</string> </value>
<key> <string>errors</string> </key>
......@@ -238,15 +242,13 @@ return request.RESPONSE.redirect( redirect_url )\n
......@@ -271,10 +273,9 @@ return request.RESPONSE.redirect( redirect_url )\n
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