[Checkins] SVN: z3ext.skintool/trunk/ Do not use _v_skin attribute
Nikolay Kim
fafhrd at datacom.kz
Wed Dec 3 10:24:15 EST 2008
Log message for revision 93575:
Do not use _v_skin attribute
Changed:
U z3ext.skintool/trunk/CHANGES.txt
U z3ext.skintool/trunk/setup.py
U z3ext.skintool/trunk/src/z3ext/skintool/subscribers.py
U z3ext.skintool/trunk/src/z3ext/skintool/tests.py
U z3ext.skintool/trunk/src/z3ext/skintool/tool.py
-=-
Modified: z3ext.skintool/trunk/CHANGES.txt
===================================================================
--- z3ext.skintool/trunk/CHANGES.txt 2008-12-03 12:49:03 UTC (rev 93574)
+++ z3ext.skintool/trunk/CHANGES.txt 2008-12-03 15:24:14 UTC (rev 93575)
@@ -2,6 +2,12 @@
CHANGES
=======
+1.1.1 (2008-12-03)
+------------------
+
+- Do not use _v_skin attribute
+
+
1.1.0 (2008-11-21)
------------------
Modified: z3ext.skintool/trunk/setup.py
===================================================================
--- z3ext.skintool/trunk/setup.py 2008-12-03 12:49:03 UTC (rev 93574)
+++ z3ext.skintool/trunk/setup.py 2008-12-03 15:24:14 UTC (rev 93575)
@@ -60,6 +60,7 @@
'zope.security',
'zope.configuration',
'zope.lifecycleevent',
+ 'zope.app.intid',
'zope.app.component',
'zope.app.publication',
'zope.i18nmessageid',
Modified: z3ext.skintool/trunk/src/z3ext/skintool/subscribers.py
===================================================================
--- z3ext.skintool/trunk/src/z3ext/skintool/subscribers.py 2008-12-03 12:49:03 UTC (rev 93574)
+++ z3ext.skintool/trunk/src/z3ext/skintool/subscribers.py 2008-12-03 15:24:14 UTC (rev 93575)
@@ -19,9 +19,11 @@
from zope.proxy import removeAllProxies
from zope.component import getUtility
from zope.interface import directlyProvides
+from zope.app.intid.interfaces import IIntIds
from zope.app.component.interfaces import ISite
from zope.app.publication.interfaces import IBeforeTraverseEvent
+from tool import cache
from interfaces import ISkinTool, ISkinable, INoSkinSwitching
@@ -39,10 +41,12 @@
if not ISkinable.providedBy(site):
return
- skin = getattr(site, '_v_skin', None)
- if skin is None:
+ id = getUtility(IIntIds).queryId(site)
+ if id not in cache:
skin = getUtility(ISkinTool).generate()
- site._v_skin = skin
+ cache[id] = skin
+ else:
+ skin = cache[id]
if skin:
directlyProvides(event.request, *skin)
Modified: z3ext.skintool/trunk/src/z3ext/skintool/tests.py
===================================================================
--- z3ext.skintool/trunk/src/z3ext/skintool/tests.py 2008-12-03 12:49:03 UTC (rev 93574)
+++ z3ext.skintool/trunk/src/z3ext/skintool/tests.py 2008-12-03 15:24:14 UTC (rev 93575)
@@ -17,15 +17,20 @@
"""
import unittest, doctest
from zope import interface, component
+from zope.app.intid import IntIds
+from zope.app.intid.interfaces import IIntIds
from zope.app.testing import setup
from tool import SkinTool
def setUp(test):
- setup.placefulSetUp(site=True)
+ site = setup.placefulSetUp(site=True)
setup.setUpTestAsModule(test, 'z3ext.skintool.README')
+ site['intid'] = IntIds()
+ component.provideUtility(site['intid'], IIntIds)
+
# register utility
tool = SkinTool()
component.provideUtility(tool)
Modified: z3ext.skintool/trunk/src/z3ext/skintool/tool.py
===================================================================
--- z3ext.skintool/trunk/src/z3ext/skintool/tool.py 2008-12-03 12:49:03 UTC (rev 93574)
+++ z3ext.skintool/trunk/src/z3ext/skintool/tool.py 2008-12-03 15:24:14 UTC (rev 93575)
@@ -16,15 +16,18 @@
$Id$
"""
from zope import interface, component
-from zope.component import getSiteManager, getAdapters, getUtilitiesFor
+from zope.component import getSiteManager
+from zope.component import getUtility, getAdapters, getUtilitiesFor
from zope.security.proxy import removeSecurityProxy
from zope.lifecycleevent.interfaces import IObjectModifiedEvent
from zope.publisher.interfaces.browser import \
IDefaultSkin, IBrowserRequest, IDefaultBrowserLayer
from zope.app.component.hooks import getSite
+from zope.app.intid.interfaces import IIntIds
from interfaces import IDefaultLayer, IDefaultLayers, ISkinTool
+cache = {}
skins_byname = {}
skins_registry = {}
layers_byname = {}
@@ -78,7 +81,8 @@
@component.adapter(ISkinTool, IObjectModifiedEvent)
def skinToolModified(*args):
- try:
- del removeSecurityProxy(getSite())._v_skin
- except:
- pass
+ global cache
+
+ id = getUtility(IIntIds).queryId(getSite())
+ if id in cache:
+ del cache[id]
More information about the Checkins
mailing list