store request in thread local data

This commit is contained in:
Helmut Merz 2012-10-27 15:39:45 +02:00
parent 9024ca99e1
commit 3bcc61880c
2 changed files with 13 additions and 4 deletions

View file

@ -69,7 +69,7 @@ from loops.resource import Resource
from loops.security.common import canAccessObject, canListObject, canWriteObject from loops.security.common import canAccessObject, canListObject, canWriteObject
from loops.type import ITypeConcept from loops.type import ITypeConcept
from loops import util from loops import util
from loops.util import _ from loops.util import _, saveRequest
from loops import version from loops import version
from loops.versioning.interfaces import IVersionable from loops.versioning.interfaces import IVersionable
@ -145,6 +145,7 @@ class BaseView(GenericView, I18NView):
raise Unauthorized(str(self.contextInfo)) raise Unauthorized(str(self.contextInfo))
except ForbiddenAttribute: # ignore when testing except ForbiddenAttribute: # ignore when testing
pass pass
saveRequest(request)
def checkPermissions(self): def checkPermissions(self):
return canAccessObject(self.context) return canAccessObject(self.context)

14
util.py
View file

@ -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 # 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 # it under the terms of the GNU General Public License as published by
@ -18,8 +18,6 @@
""" """
Utility functions. Utility functions.
$Id$
""" """
import os import os
@ -28,6 +26,7 @@ from zope.app.intid.interfaces import IIntIds
from zope.interface import directlyProvides, directlyProvidedBy from zope.interface import directlyProvides, directlyProvidedBy
from zope.i18nmessageid import MessageFactory from zope.i18nmessageid import MessageFactory
from zope.schema import vocabulary from zope.schema import vocabulary
from zope import thread
import cybertools import cybertools
from loops.browser.util import html_quote from loops.browser.util import html_quote
@ -134,3 +133,12 @@ def getLogDirectory(request=None):
return os.path.join(os.path.dirname(varDir), 'log') 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