From 3bcc61880ccc07f2d6c70d3f8288cae9ccbf6032 Mon Sep 17 00:00:00 2001 From: Helmut Merz Date: Sat, 27 Oct 2012 15:39:45 +0200 Subject: [PATCH] store request in thread local data --- browser/common.py | 3 ++- util.py | 14 +++++++++++--- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/browser/common.py b/browser/common.py index d3d96f5..fec9cbc 100644 --- a/browser/common.py +++ b/browser/common.py @@ -69,7 +69,7 @@ from loops.resource import Resource from loops.security.common import canAccessObject, canListObject, canWriteObject from loops.type import ITypeConcept from loops import util -from loops.util import _ +from loops.util import _, saveRequest from loops import version from loops.versioning.interfaces import IVersionable @@ -145,6 +145,7 @@ class BaseView(GenericView, I18NView): raise Unauthorized(str(self.contextInfo)) except ForbiddenAttribute: # ignore when testing pass + saveRequest(request) def checkPermissions(self): return canAccessObject(self.context) diff --git a/util.py b/util.py index b02bce9..74f152b 100644 --- a/util.py +++ b/util.py @@ -1,5 +1,5 @@ # -# Copyright (c) 2006 Helmut Merz helmutm@cy55.de +# Copyright (c) 2012 Helmut Merz helmutm@cy55.de # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -18,8 +18,6 @@ """ Utility functions. - -$Id$ """ import os @@ -28,6 +26,7 @@ from zope.app.intid.interfaces import IIntIds from zope.interface import directlyProvides, directlyProvidedBy from zope.i18nmessageid import MessageFactory from zope.schema import vocabulary +from zope import thread import cybertools from loops.browser.util import html_quote @@ -134,3 +133,12 @@ def getLogDirectory(request=None): return os.path.join(os.path.dirname(varDir), 'log') +# store thread-local stuff + +local_data = thread.local() + +def saveRequest(request): + local_data.request = request + +def getRequest(): + return local_data.request