1 | from zope.component import adapter |
---|
2 | from Products.CMFCore.utils import getToolByName |
---|
3 | #from quintagroup.plonegooglesitemaps.events import AfterTransitionEvent |
---|
4 | from Products.DCWorkflow.interfaces import IAfterTransitionEvent |
---|
5 | from Acquisition import aq_parent |
---|
6 | from plone.app.layout.navigation.defaultpage import isDefaultPage |
---|
7 | |
---|
8 | from quintagroup.plonegooglesitemaps.utils import ping_google |
---|
9 | |
---|
10 | |
---|
11 | @adapter(IAfterTransitionEvent) |
---|
12 | def pingGoogle(event): |
---|
13 | tr_id = getattr(event.transition, 'id', '') |
---|
14 | if not tr_id: |
---|
15 | # object under creation |
---|
16 | return 0 |
---|
17 | |
---|
18 | object = event.object |
---|
19 | catalog = getToolByName(object, 'portal_catalog') |
---|
20 | |
---|
21 | sitemaps = [b.getObject() for b in catalog(portal_type='Sitemap')] |
---|
22 | if sitemaps: |
---|
23 | url = getToolByName(object, 'portal_url') |
---|
24 | plone_home = url.getPortalObject().absolute_url() |
---|
25 | wftrans_name = "%s#%s" % (event.workflow.id, tr_id) |
---|
26 | obj_ptype = object.portal_type |
---|
27 | for sm in sitemaps: |
---|
28 | if wftrans_name in sm.getPingTransitions() \ |
---|
29 | and obj_ptype in sm.getPortalTypes(): |
---|
30 | ping_google(plone_home, sm.id) |
---|
31 | return 0 |
---|
32 | |
---|
33 | |
---|
34 | def reindexParentObjects(obj, event): |
---|
35 | """ Method reindexes folderish objects according |
---|
36 | to modification date from default object |
---|
37 | """ |
---|
38 | def reindex(obj): |
---|
39 | container = aq_parent(obj) |
---|
40 | if isDefaultPage(container, obj): |
---|
41 | container.reindexObject(['sitemap_date']) |
---|
42 | reindex(container) |
---|
43 | |
---|
44 | reindex(obj) |
---|