r13677 - in archetypes.schemaextender/branches/2.0: . archetypes/schemaextender
"Malthe Borch" <[email protected]> Sat, 11 Jun 2011 09:47:01 +0000
| Newsgroups | gmane.comp.web.zope.plone.archetypes.cvs |
|---|---|
| Message-ID | <[email protected]> |
Author: mborch
Date: Sat Jun 11 09:47:01 2011
New Revision: 13677
Modified:
archetypes.schemaextender/branches/2.0/CHANGES.txt
archetypes.schemaextender/branches/2.0/archetypes/schemaextender/extender.py
Log:
Backport request acquisition fix from trunk.
Modified: archetypes.schemaextender/branches/2.0/CHANGES.txt
==============================================================================
--- archetypes.schemaextender/branches/2.0/CHANGES.txt (original)
+++ archetypes.schemaextender/branches/2.0/CHANGES.txt Sat Jun 11 09:47:01 2011
@@ -4,6 +4,13 @@
2.0.4 - unreleased
------------------
+* Acquire request object via local site hook if object is not
+ acquisition-wrapped (in ``cachingInstanceSchemaFactory``). This
+ fixes caching issues with objects rendered using DTML. Note that
+ this is likely a bug in the ``DocumentTemplate`` code. Ideally, the
+ issue should be resolved there.
+ [malthe]
+
* Added example how to use ordered extenders and browser layer aware extenders [miohtama]
2.0.3 - 2010-07-07
Modified: archetypes.schemaextender/branches/2.0/archetypes/schemaextender/extender.py
==============================================================================
--- archetypes.schemaextender/branches/2.0/archetypes/schemaextender/extender.py (original)
+++ archetypes.schemaextender/branches/2.0/archetypes/schemaextender/extender.py Sat Jun 11 09:47:01 2011
@@ -10,6 +10,13 @@
from archetypes.schemaextender.interfaces import IExtensible
from zope.component import adapter, getAdapters
from zope.interface import implementer
+
+try:
+ from zope.site.hooks import getSite
+except ImportError:
+ # BBB, for older Zope 2
+ from zope.app.component.hooks import getSite
+
try:
from plone.browserlayer.utils import registered_layers
has_plone_browserlayer = True
@@ -111,8 +118,17 @@
""" schema adapter factory using a cache on the request object """
schema = None
if CACHE_ENABLED:
- request = getattr(context, 'REQUEST', None)
- if request is not None and not isinstance(request, str):
+ try:
+ lookup = context.aq_acquire
+ except AttributeError:
+ site = getSite()
+ lookup = site.aq_acquire
+
+ try:
+ request = lookup('REQUEST')
+ except AttributeError:
+ pass
+ else:
attr = CACHE_KEY
cache = getattr(request, attr, _marker)
if cache is _marker:
------------------------------------------------------------------------------
EditLive Enterprise is the world's most technically advanced content
authoring tool. Experience the power of Track Changes, Inline Image
Editing and ensure content is compliant with Accessibility Checking.
http://p.sf.net/sfu/ephox-dev2dev