Changeset 2415 in products for quintagroup.plonegooglesitemaps


Ignore:
Timestamp:
May 31, 2010 4:30:47 PM (14 years ago)
Author:
mylan
Message:

#131: Update default fallback values for news-sitemaps. Added tests for minimal news item object

Location:
quintagroup.plonegooglesitemaps/trunk/quintagroup/plonegooglesitemaps
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • quintagroup.plonegooglesitemaps/trunk/quintagroup/plonegooglesitemaps/browser/newssitemapview.py

    r2413 r2415  
    33from commonview import * 
    44from zope.component import getMultiAdapter 
     5from plone.memoize.view import memoize 
    56 
    67reTrailingParenthtical = re.compile("\s*\(.*\)\s*", re.S) 
     
    1213    implements(ISitemapView) 
    1314 
    14     additional_maps = ( 
    15         ('publication_date', lambda x:DateTime(x.EffectiveDate).strftime("%Y-%m-%d")), 
    16         ('keywords', lambda x:', '.join(x.Subject)), 
    17         ('title', lambda x:x.Title), 
    18         ('name', lambda x:reTrailingParenthtical.sub("",x.Title)), 
    19         ('language', lambda x:x.Language), 
    20         ('access', lambda x:x.gsm_access), 
    21         ('genres', lambda x:x and ", ".join(x.gsm_genres) or ""), 
    22     ) 
     15    @property 
     16    def additional_maps(self): 
     17        import pdb;pdb.set_trace() 
     18        return ( 
     19            ('publication_date', lambda x:DateTime(x.EffectiveDate).strftime("%Y-%m-%d")), 
     20            ('keywords', lambda x:', '.join(x.Subject)), 
     21            ('title', lambda x:x.Title or x.getId or x.id), 
     22            ('name', lambda x:reTrailingParenthtical.sub("",x.Title)), 
     23            ('language', lambda x:x.Language or self.default_language()), 
     24            ('access', lambda x:x.gsm_access or ""), 
     25            ('genres', lambda x:x and ", ".join(x.gsm_genres) or ""), 
     26        ) 
     27 
     28    @memoize 
     29    def default_language(self): 
     30        pps = getMultiAdapter((self.context, self.request), name="plone_portal_state") 
     31        return pps.default_language 
    2332 
    2433    def getFilteredObjects(self): 
  • quintagroup.plonegooglesitemaps/trunk/quintagroup/plonegooglesitemaps/browser/templates/newssitemapview.pt

    r2399 r2415  
    1919        <n:publication_date tal:content="result/publication_date">2006-08-14</n:publication_date> 
    2020        <n:title tal:content="result/title">Full title of the news item</n:title> 
    21         <n:keywords tal:content="result/keywords">Business, Mergers, Acquisitions</n:keywords> 
     21        <n:keywords tal:condition="result/keywords" tal:content="result/keywords"> 
     22          Business, Mergers, Acquisitions</n:keywords> 
    2223    </n:news> 
    2324  </url> 
  • quintagroup.plonegooglesitemaps/trunk/quintagroup/plonegooglesitemaps/tests/testNewsSitemaps.py

    r2413 r2415  
    108108        self.reParse() 
    109109        self.assertNotEqual("n:genres" in self.start.keys(), True) 
     110 
     111 
     112class TestNewsSitemapsXMLDefaultObject(FunctionalTestCase): 
     113 
     114    def afterSetUp(self): 
     115        super(TestNewsSitemapsXMLDefaultObject, self).afterSetUp() 
     116        # Create news sitemaps  
     117        _createObjectByType("Sitemap", self.portal, id="news-sitemaps", 
     118                            sitemapType="news", portalTypes=("News Item",)) 
     119        self.portal["news-sitemaps"].at_post_create_script() 
     120        # Add minimal testing news item to portal 
     121        self.pubdate = (DateTime()+1).strftime("%Y-%m-%d") 
     122        my_news = self.portal.invokeFactory("News Item", id="my_news") 
     123        self.my_news = self.portal["my_news"] 
     124        self.my_news.edit(effectiveDate=self.pubdate) 
     125        self.portal.portal_workflow.doActionFor(self.my_news, "publish") 
     126        self.reParse() 
     127 
     128    def reParse(self): 
     129        # Parse news sitemap 
     130        self.sitemap = self.publish("/"+self.portal.absolute_url(1) + "/news-sitemaps", 
     131                                    "%s:%s" % (portal_owner, default_password)).getBody() 
     132        parsed_sitemap = parse(self.sitemap) 
     133        self.start = parsed_sitemap["start"] 
     134        self.data = parsed_sitemap["data"] 
     135 
     136    def test_nnews(self): 
     137        self.assert_("n:news" in self.start.keys()) 
     138         
     139    def test_npublication(self): 
     140        open("/tmp/news.sm.xml", "w").write(self.sitemap) 
     141        self.assert_("n:publication" in self.start.keys()) 
     142        self.assert_("n:name" in self.start.keys()) 
     143        self.assert_("my_news" in self.data, "No 'First news' in data") 
     144        self.assert_("n:language" in self.start.keys()) 
     145        self.assert_("en" in self.data, "No 'en' in data") 
     146 
     147    def test_npublication_date(self): 
     148        self.assert_("n:publication_date" in self.start.keys()) 
     149        self.assert_(self.pubdate in self.data, "No %s in data" % self.pubdate) 
     150         
     151    def test_ntitle(self): 
     152        self.assert_("n:title" in self.start.keys()) 
     153        self.assert_("my_news" in self.data, "No 'First news (test)' in data") 
     154 
     155    def test_no_naccess(self): 
     156        self.assert_("n:access" not in self.start.keys()) 
     157 
     158    def test_no_ngenres(self): 
     159        self.assert_("n:genres" not in self.start.keys()) 
     160 
     161    def test_no_keywords(self): 
     162        self.assert_("n:keywords" not in self.start.keys()) 
    110163 
    111164 
     
    148201    suite = TestSuite() 
    149202    suite.addTest(makeSuite(TestNewsSitemapsXML)) 
     203    suite.addTest(makeSuite(TestNewsSitemapsXMLDefaultObject)) 
    150204    suite.addTest(makeSuite(TestSchemaExtending)) 
    151205    return suite 
Note: See TracChangeset for help on using the changeset viewer.