[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