# HG changeset patch # User Lennard de Rijk # Date 1234891734 0 # Node ID 178bd19966fe1c1447b5a23b2d79b7618c411971 # Parent a9b7f64d4813355c4fb2fd78280b92db5f3e9503 Fixes the problem of Saved not being shown whenever a new entity is created. Patch by: Madhusudan C.S. Reviewed by: Lennard de Rijk diff -r a9b7f64d4813 -r 178bd19966fe app/soc/views/helper/requests.py --- a/app/soc/views/helper/requests.py Tue Feb 17 16:37:24 2009 +0000 +++ b/app/soc/views/helper/requests.py Tue Feb 17 17:28:54 2009 +0000 @@ -22,6 +22,7 @@ ] +import os import urlparse @@ -91,7 +92,7 @@ def isReferrerSelf(request, - expected_prefix=None, suffix=None): + expected_prefix=None, suffix=None, url_name=None): """Returns True if HTTP referrer path starts with the HTTP request path. Args: @@ -103,6 +104,7 @@ it to the HTTP referrer path in the HTTP request object headers (this is often an link ID, for example, that may be changing from a POST referrer to a GET redirect target) + url_name: url name of the entity that is being created Returns: True if HTTP referrer path begins with the HTTP request path (either @@ -112,13 +114,18 @@ """ http_from = request.META.get('HTTP_REFERER') - + if not http_from: # no HTTP referrer, so cannot possibly start with expected prefix return False + http_host = 'http://%s/%s' %(os.environ['HTTP_HOST'],url_name) + + if http_from.startswith(http_host): + return True + from_path = urlparse.urlparse(http_from).path - + if not expected_prefix: # use HTTP request path, since expected_prefix was not supplied expected_prefix = request.path @@ -135,7 +142,7 @@ if not from_path.startswith(expected_prefix): # expected prefix did not match first part of HTTP referrer path return False - + # HTTP referrer started with (possibly truncated) expected prefix return True diff -r a9b7f64d4813 -r 178bd19966fe app/soc/views/models/base.py --- a/app/soc/views/models/base.py Tue Feb 17 16:37:24 2009 +0000 +++ b/app/soc/views/models/base.py Tue Feb 17 17:28:54 2009 +0000 @@ -412,15 +412,17 @@ suffix = self._logic.getKeySuffix(entity) - # Remove the params from the request, this is relevant only if + # remove the params from the request, this is relevant only if # someone bookmarked a POST page. - is_self_referrer = helper.requests.isReferrerSelf(request, suffix=suffix) + is_self_referrer = helper.requests.isReferrerSelf( + request, suffix=suffix, url_name=params['url_name']) + if request.GET.get(params['submit_msg_param_name']): if (not entity) or (not is_self_referrer): return http.HttpResponseRedirect(request.path) if entity: - # Note: no message will be displayed if parameter is not present + # note: no message will be displayed if parameter is not present context['notice'] = helper.requests.getSingleIndexedParamValue( request, params['submit_msg_param_name'], values=params['save_message'])