From f7d8bdaeafc11ee93df29b12bb6160bbd6abe061 Mon Sep 17 00:00:00 2001 From: Vincent Pelletier <vincent@nexedi.com> Date: Wed, 14 May 2008 02:17:07 +0000 Subject: [PATCH] Always define request_info on message instances. Do not loose information about presence or not of saved request values (do not use "get"). Only recreate a iHotfix context if a language is available in request: otherwise, translating will fail loudly. If no context is defined, translation will still fail, but silently. Sigh. git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@20943 20353a03-c40f-0410-a6d1-a30d3c3de9de --- product/CMFActivity/ActivityTool.py | 49 ++++++++++++++++------------- 1 file changed, 27 insertions(+), 22 deletions(-) diff --git a/product/CMFActivity/ActivityTool.py b/product/CMFActivity/ActivityTool.py index c4760cb7a5..6da52ee22b 100644 --- a/product/CMFActivity/ActivityTool.py +++ b/product/CMFActivity/ActivityTool.py @@ -140,13 +140,18 @@ class Message: self.processing = None self.user_name = str(_getAuthenticatedUser(self)) # Store REQUEST Info + self.request_info = {} request = getattr(obj, 'REQUEST', None) if request is not None: - self.request_info = dict( - SERVER_URL=request.other['SERVER_URL'], - VirtualRootPhysicalPath=request.other.get('VirtualRootPhysicalPath'), - HTTP_ACCEPT_LANGUAGE=request.environ.get('HTTP_ACCEPT_LANGUAGE'), - _script=list(request._script)) + if 'SERVER_URL' in request.other: + self.request_info['SERVER_URL'] = request.other['SERVER_URL'] + if 'VirtualRootPhysicalPath' in request.other: + self.request_info['VirtualRootPhysicalPath'] = \ + request.other['VirtualRootPhysicalPath'] + if 'HTTP_ACCEPT_LANGUAGE' in request.environ: + self.request_info['HTTP_ACCEPT_LANGUAGE'] = \ + request.environ['HTTP_ACCEPT_LANGUAGE'] + self.request_info['_script'] = list(request._script) def getObject(self, activity_tool): """return the object referenced in this message.""" @@ -831,25 +836,25 @@ class ActivityTool (Folder, UniqueObject): # restore request information new_request = request.clone() - request_info = getattr(message, 'request_info', None) - if request_info is not None: + request_info = message.request_info + new_request._script = request_info['_script'] + if 'SERVER_URL' in request_info: new_request.other['SERVER_URL'] = request_info['SERVER_URL'] - virtual_root_path = request_info.get('VirtualRootPhysicalPath') - if virtual_root_path: - new_request.other['VirtualRootPhysicalPath'] = virtual_root_path + if 'VirtualRootPhysicalPath' in request_info: + new_request.other['VirtualRootPhysicalPath'] = request_info['VirtualRootPhysicalPath'] + if 'HTTP_ACCEPT_LANGUAGE' in request_info: new_request.environ['HTTP_ACCEPT_LANGUAGE'] = request_info['HTTP_ACCEPT_LANGUAGE'] - new_request._script = request_info['_script'] - # Replace iHotfix Context, saving existing one - ihotfix_context = iHotfix.Context(new_request) - id = get_ident() - iHotfix._the_lock.acquire() - try: - old_ihotfix_context = iHotfix.contexts.get(id) - iHotfix.contexts[id] = ihotfix_context - finally: - iHotfix._the_lock.release() - # Execute iHotfix "patch 2" - new_request.processInputs() + # Replace iHotfix Context, saving existing one + ihotfix_context = iHotfix.Context(new_request) + id = get_ident() + iHotfix._the_lock.acquire() + try: + old_ihotfix_context = iHotfix.contexts.get(id) + iHotfix.contexts[id] = ihotfix_context + finally: + iHotfix._the_lock.release() + # Execute iHotfix "patch 2" + new_request.processInputs() new_request_container = request_container.__class__(REQUEST=new_request) # Recreate acquisition chain. -- 2.30.9