[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