[commits] r57 - in selinux-site/trunk/selinux.theme/selinux/theme: . browser

tim at mail.se.linux.org tim at mail.se.linux.org
Fre Juli 20 00:53:31 CEST 2007


Author: tim
Date: 2007-07-20 00:53:31 +0200 (Fri, 20 Jul 2007)
New Revision: 57

Added:
   selinux-site/trunk/selinux.theme/selinux/theme/caching_subscribers.py
Removed:
   selinux-site/trunk/selinux.theme/selinux/theme/subscribers.py
Modified:
   selinux-site/trunk/selinux.theme/selinux/theme/browser/configure.zcml
   selinux-site/trunk/selinux.theme/selinux/theme/browser/frontpage.py
   selinux-site/trunk/selinux.theme/selinux/theme/configure.zcml
Log:
Using varnish for caching the frontpage now works. There are a few settings in portal_properties/site_properties that are added when se.linux.org/@@install_caching is run. This setup works with Apache -> Varnish -> Zope.


Modified: selinux-site/trunk/selinux.theme/selinux/theme/browser/configure.zcml
===================================================================
--- selinux-site/trunk/selinux.theme/selinux/theme/browser/configure.zcml	2007-07-16 22:07:50 UTC (rev 56)
+++ selinux-site/trunk/selinux.theme/selinux/theme/browser/configure.zcml	2007-07-19 22:53:31 UTC (rev 57)
@@ -9,6 +9,13 @@
       permission="zope.Public"
       />
 
+  <browser:page
+      for="Products.CMFCore.interfaces.ISiteRoot"
+      name="install_caching"
+      class=".caching.InstallCaching"
+      permission="cmf.ManagePortal"
+      />
+
   <!-- portal title -->
   <browser:viewlet
       name="selinux.portaltitle"

Modified: selinux-site/trunk/selinux.theme/selinux/theme/browser/frontpage.py
===================================================================
--- selinux-site/trunk/selinux.theme/selinux/theme/browser/frontpage.py	2007-07-16 22:07:50 UTC (rev 56)
+++ selinux-site/trunk/selinux.theme/selinux/theme/browser/frontpage.py	2007-07-19 22:53:31 UTC (rev 57)
@@ -1,5 +1,4 @@
 from Products.CMFCore.utils import getToolByName
-from Products.CMFPlone.interfaces import ITranslationServiceTool
 from zope.component import getUtility
 
 class FrontPage(object):
@@ -20,7 +19,7 @@
 
     def news(self):
         mtool = getToolByName(self.context, 'portal_membership')
-        trans_util = getUtility(ITranslationServiceTool)
+        trans_util = getToolByName(self.context, 'translation_service')
         catalog = getToolByName(self.context, 'portal_catalog')
         query = { 'portal_type': 'News Item',
                   'sort_on': 'created',

Added: selinux-site/trunk/selinux.theme/selinux/theme/caching_subscribers.py
===================================================================
--- selinux-site/trunk/selinux.theme/selinux/theme/caching_subscribers.py	2007-07-16 22:07:50 UTC (rev 56)
+++ selinux-site/trunk/selinux.theme/selinux/theme/caching_subscribers.py	2007-07-19 22:53:31 UTC (rev 57)
@@ -0,0 +1,44 @@
+from Products.CMFCore.utils import getToolByName
+from httplib import HTTPConnection
+
+def purge_frontpage(obj):
+    portal_props = getToolByName(obj, 'portal_properties')
+    site_props = getattr(portal_props, 'site_properties')
+    
+    if not site_props.getProperty('purge_enabled', False):
+        return
+
+    host = site_props.getProperty('purging_host', None)
+    port = site_props.getProperty('purging_port', None)
+    paths = site_props.getProperty('purging_paths', None)
+
+    for path in paths:
+        try:
+            connection = HTTPConnection(host, port)
+            connection.putrequest('PURGE', path)
+            connection.endheaders()
+            response = connection.getresponse()
+            connection.close()
+        except socket.error, msg:
+            pass
+
+def news_added(obj, event):
+    """ This is called when a news item is added to the site. """
+    workflow = getToolByName(obj, 'portal_workflow')
+    state = workflow.getInfoFor(obj, 'review_state')
+
+    # when a news item is created it's first added to a temporary folder
+    # that shouldn't trigger purge
+    if state == 'published' and obj.aq_parent.portal_type != 'TempFolder':
+        purge_frontpage(obj)
+
+def news_modified(obj, event):
+    """ This is called when a news item is modified. """
+    workflow = getToolByName(obj, 'portal_workflow')
+    state = workflow.getInfoFor(obj, 'review_state')
+    if state == 'published':
+        purge_frontpage(obj)
+
+def news_workflow_transition(obj, event):
+    """ This is called when a news item's workflow state changed. """
+    purge_frontpage(obj)

Modified: selinux-site/trunk/selinux.theme/selinux/theme/configure.zcml
===================================================================
--- selinux-site/trunk/selinux.theme/selinux/theme/configure.zcml	2007-07-16 22:07:50 UTC (rev 56)
+++ selinux-site/trunk/selinux.theme/selinux/theme/configure.zcml	2007-07-19 22:53:31 UTC (rev 57)
@@ -21,8 +21,20 @@
 
   <subscriber
       for="Products.ATContentTypes.content.newsitem.ATNewsItem
+           zope.lifecycleevent.interfaces.IObjectModifiedEvent"
+      handler=".caching_subscribers.news_modified"
+      />
+
+  <subscriber
+      for="Products.ATContentTypes.content.newsitem.ATNewsItem
            zope.app.container.interfaces.IObjectAddedEvent"
-      handler=".subscribers.news_added"
+      handler=".caching_subscribers.news_added"
       />
 
+  <subscriber
+      for="Products.ATContentTypes.content.newsitem.ATNewsItem
+           Products.CMFCore.interfaces.IActionSucceededEvent"
+      handler=".caching_subscribers.news_workflow_transition"
+      />
+
 </configure>

Deleted: selinux-site/trunk/selinux.theme/selinux/theme/subscribers.py
===================================================================
--- selinux-site/trunk/selinux.theme/selinux/theme/subscribers.py	2007-07-16 22:07:50 UTC (rev 56)
+++ selinux-site/trunk/selinux.theme/selinux/theme/subscribers.py	2007-07-19 22:53:31 UTC (rev 57)
@@ -1,11 +0,0 @@
-from Products.CMFCore.utils import getToolByName
-
-def news_added(obj, event):
-    """ This is called when a news item is added to the site. """
-    if obj.aq_parent.portal_type != 'TempFolder':
-        print "NEWS ADDED"
-        cache = getToolByName(obj, 'portal_squid', None)
-        portal = getToolByName(obj, 'portal_url').getPortalObject()
-        if cache:
-            cache.pruneObject(portal)
-            print "PRUNED"




More information about the commits mailing list