source: products/quintagroup.plonegooglesitemaps/branches/sitemap_date/quintagroup/plonegooglesitemaps/indexers.py @ 3504

Last change on this file since 3504 was 3504, checked in by potar, 12 years ago

added compability with Plone 3

File size: 1.8 KB
Line 
1from plone.app.layout.navigation.defaultpage import getDefaultPage
2
3from zope.interface import Interface
4
5from quintagroup.plonegooglesitemaps.utils import dateTime
6
7#BBB: for compatibility with older plone versions
8# (Plone 3.0, Plone 3.1, Plone3.2)
9try:
10    from plone.indexer import indexer
11    IS_NEW = True
12except ImportError:
13    IS_NEW = False
14
15    class IDummyInterface:
16        pass
17
18    class indexer:
19
20        def __init__(self, *interfaces):
21            self.interfaces = IDummyInterface,
22
23        def __call__(self, callable):
24            callable.__component_adapts__ = self.interfaces
25            callable.__implemented__ = Interface
26            return callable
27
28
29@indexer(Interface)
30def sitemap_date(obj, **kwargs):
31    """ Method gets date for sitemap """
32
33    def lastModificationDate(folderish_date, default_page):
34        """  Method compares date (folderish object)
35            with another date (default_page) and returns the last
36        """
37
38        # get modification date
39        child_mdate = dateTime(default_page)
40
41        if folderish_date > child_mdate:
42            last_date = folderish_date
43        else:
44            last_date = child_mdate
45
46        child = getDefaultPage(default_page)
47        if not child:
48            return last_date
49
50        return lastModificationDate(last_date,
51                                    default_page[child])
52
53    default_page = getDefaultPage(obj)
54    # get modification date
55    date = dateTime(obj)
56    if default_page:
57        date = lastModificationDate(date, getattr(obj, default_page))
58
59    return date.HTML4()
60
61#BBB: for compatibility with older plone versions
62# (Plone 3.0, Plone 3.1, Plone3.2)
63if not IS_NEW:
64    from Products.CMFPlone.CatalogTool import registerIndexableAttribute
65    registerIndexableAttribute('sitemap_date', sitemap_date)
Note: See TracBrowser for help on using the repository browser.