source: products/quintagroup.plonegooglesitemaps/trunk/quintagroup/plonegooglesitemaps/browser/newssitemapview.py @ 2751

Last change on this file since 2751 was 2751, checked in by mylan, 14 years ago

#229: Fixed gsm_gentres, title, publication_date (replace EffectiveDate? to Date brain) data calculation for news sitemap

  • Property svn:eol-style set to native
File size: 1.6 KB
Line 
1import re
2from DateTime import DateTime
3from zope.component import getMultiAdapter
4from plone.memoize.view import memoize
5from quintagroup.plonegooglesitemaps.browser.commonview import *
6
7reTrailingParenthtical = re.compile("\s*\(.*\)\s*", re.S)
8
9formatDate = lambda d:DateTime(d).strftime("%Y-%m-%d")
10
11class NewsSitemapView(CommonSitemapView):
12    """
13    News Sitemap browser view
14    """
15    implements(ISitemapView)
16
17    @property
18    def additional_maps(self):
19       
20        return (
21            ('publication_date', lambda x:x.Date and formatDate(x.Date) or ""),
22            ('keywords', lambda x:x.Subject and ', '.join(x.Subject) or ""),
23            ('title', lambda x:x.Title or x.getId or x.id),
24            ('name', lambda x:x.Title and reTrailingParenthtical.sub("",x.Title) or ""),
25            ('language', lambda x:x.Language or self.default_language()),
26            ('access', lambda x:x.gsm_access or ""),
27            ('genres', lambda x:x.gsm_genres and ", ".join(x.gsm_genres) or ""),
28            ('stock', lambda x:x.gsm_stock or ""),
29        )
30
31    @memoize
32    def default_language(self):
33        pps = getMultiAdapter((self.context, self.request), name="plone_portal_state")
34        return pps.default_language
35
36    def getFilteredObjects(self):
37        min_date = DateTime() - 3
38        return self.portal_catalog(
39            path = self.search_path,
40            portal_type = self.context.getPortalTypes(),
41            review_state = self.context.getStates(),
42            effective = {"query": min_date,
43                         "range": "min" }
44            )
Note: See TracBrowser for help on using the repository browser.