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.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)

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
# 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