[414] | 1 | from urllib2 import urlopen |
---|
| 2 | from urllib import quote as urlquote |
---|
| 3 | |
---|
| 4 | from zope.component import adapter |
---|
| 5 | from Products.CMFCore.utils import getToolByName |
---|
| 6 | from Products.qPloneGoogleSitemaps.events import AfterTransitionEvent |
---|
| 7 | from Products.qPloneGoogleSitemaps.interfaces import IAfterTransitionEvent |
---|
| 8 | from Products.qPloneGoogleSitemaps.utils import ping_google |
---|
| 9 | |
---|
| 10 | def pingByType(event, smtype): |
---|
| 11 | object = event.object |
---|
[432] | 12 | portal = getToolByName(object, 'portal_url').getPortalObject() |
---|
| 13 | pp = getToolByName(object, 'portal_properties') |
---|
| 14 | props = getattr(pp, 'googlesitemap_properties', None) |
---|
[443] | 15 | |
---|
[432] | 16 | pname = "%s_default" % smtype |
---|
| 17 | csm_path = props and props.getProperty(pname, '') or '' |
---|
| 18 | if csm_path: |
---|
| 19 | csm = portal.unrestrictedTraverse(csm_path, default=None) |
---|
[414] | 20 | wftrans_name = "%s#%s" % (event.workflow.id, event.transition.id) |
---|
[432] | 21 | if csm and wftrans_name in csm.getPingTransitions(): |
---|
[414] | 22 | plone_home = getToolByName(object, 'portal_url').getPortalObject().absolute_url() |
---|
[443] | 23 | ping_google(plone_home, csm.id) |
---|
[414] | 24 | print "Pinged %s sitemap to google" % smtype |
---|
| 25 | |
---|
| 26 | |
---|
| 27 | @adapter(IAfterTransitionEvent) |
---|
| 28 | def pingGoogle(event): |
---|
| 29 | for smtype in ['content', 'mobile', 'news']: |
---|
| 30 | pingByType(event, smtype) |
---|
| 31 | return 0 |
---|