Changeset 3510 in products


Ignore:
Timestamp:
Aug 22, 2012 10:22:22 AM (7 years ago)
Author:
potar
Message:

Merged sitemap_date branch into trunk

Location:
quintagroup.plonegooglesitemaps/trunk
Files:
33 edited
1 copied

Legend:

Unmodified
Added
Removed
  • quintagroup.plonegooglesitemaps/trunk

    • Property svn:mergeinfo
      •  

        old new  
        33/quintagroup.plonegooglesitemaps/branches/migratioin_product:2826-2839 
        44/quintagroup.plonegooglesitemaps/branches/plone4:2549-2553 
         5/quintagroup.plonegooglesitemaps/branches/sitemap_date:3481-3509 
        56/quintagroup.plonegooglesitemaps/branches/test_refactoring:2527-2536 
  • quintagroup.plonegooglesitemaps/trunk/README.txt

    r3325 r3510  
    22============ 
    33 
    4 Plone Google Sitemaps product allows Plone websites to get better visibility for Google search engine 
    5 by providing it with complete listing of URLs to website content. 
     4Plone Google Sitemaps product allows Plone websites to get better visibility on Google search engine 
     5by providing it with a complete listing of content URLs to website. 
    66 
    77.. figure:: http://quintagroup.com/services/plone-development/products/google-sitemaps/plone-google-sitemaps.png 
     
    1515 
    1616* ``Content Sitemap`` - is a regular list of pages on your website. Creating and submitting such a Sitemap  
    17   lets Google know about all the pages on your Plone web site, including URLs that may not be discoverable 
     17  lets Google know about all the pages on your Plone website, including URLs that may not be discoverable 
    1818  by Google's normal crawling process. 
    19 * ``Mobile Sitemap`` - is a specific type of Sitemap, that indexes all site URLs that serve content for  
    20   mobile devices. 
     19* ``Mobile Sitemap`` - is a specific type of Sitemap, that indexes all site URLs that serve mobile-oriented content. 
    2120* ``News Sitemap`` - is different from regular Sitemaps, since it is specific to Google News only. 
    22   It uses the Sitemap protocol, with additional News-specific tags, defined by Google. The package brings  
    23   additional Google Sitempas tab to News Item content type for defining NewsSitemap-specific meta tags.  
     21  It uses the Sitemap protocol, with additional News-specific tags, defined by Google. The package brings protocol with  
     22  additional Google Sitemaps tab to News Item content type for defining NewsSitemap-specific meta tags.  
    2423 
    25 Different Sitemap types index their own content and do not depend on other Sitemaps. 
     24Different Sitemap types index their own content and do not depend on other Sitemaps.  
    2625 
    2726Usage 
     
    3938========= 
    4039 
    41 If you UPGRADE older version of quintagroup.plonegooglesitemaps package to newer: 
    42 --------------------------------------------------------------------------------- 
     40If you UPGRADE an older version of quintagroup.plonegooglesitemaps package to a newer one: 
     41------------------------------------------------------------------------------------------ 
    4342 
    44 * In your zope instance configuration or buildout - replace old package version with a new one. 
     43* In your zope instance configuration or buildout replace old package version with a new one. 
    4544* Run plone instance and reinstall package with Quickinstaller tool ("Add-on Products" in plone control panel). 
    4645 
    47 If your MIGRATE from Products.qPloneGoogleSitemaps to quintagroup.plonegooglesitemaps: 
    48 -------------------------------------------------------------------------------------- 
     46If you MIGRATE from Products.qPloneGoogleSitemaps to quintagroup.plonegooglesitemaps: 
     47------------------------------------------------------------------------------------- 
    4948     
    50 * Add to new plone instance/buildout both qPloneGoogleSitemaps product and last version quintagroup.plonegooglesitemaps package. 
     49* Add to a new Plone instance/buildout both qPloneGoogleSitemaps product and last version quintagroup.plonegooglesitemaps package. 
    5150* Copy Data.fs from old Plone instance to new one. 
    52 * Start your new zope instance/buildout. 
     51* Start your new Zope instance/buildout. 
    5352 
    5453The following steps are performed in the plone instance: 
  • quintagroup.plonegooglesitemaps/trunk/docs/HISTORY.txt

    r3413 r3510  
    22========= 
    33 
    4 1.7.1 - unreleased 
     41.8.0 (2012-08-22) 
    55------------------ 
    66 
     7* Updated modification date in Sitemaps for folderish objects which have 
     8  default pages. 
     9  Sitemap types have their own index (sitemap_date)  
     10  which helps to generate Sitemaps without default pages.  
     11  Index contains the last modification date from this object or   
     12  from default page. As а result you will not see default pages  
     13  in sitemap types. 
     14  [potar] 
     15* Added tests for index (sitemap_date), updated tests. 
     16  [potar] 
    717* Added deleting (button) the verification file 
    818  [potar] 
    9  
    1019* Updated view quintagroup.plonegooglesitemaps (tabs) 
    1120  [potar] 
     21   
    1222 
    13231.7.0 (2011-10-28) 
  • quintagroup.plonegooglesitemaps/trunk/quintagroup/plonegooglesitemaps/Extensions/Install.py

    r3152 r3510  
    2020        step = None 
    2121        profile_id = 'quintagroup.plonegooglesitemaps:default' 
    22         steps_to_run = [s['id'] for s in \ 
     22        steps_to_run = [s['id'] for s in 
    2323                        ps.listUpgrades(profile_id, show_old=False)] 
    2424        for step_id in steps_to_run: 
  • quintagroup.plonegooglesitemaps/trunk/quintagroup/plonegooglesitemaps/__init__.py

    r3163 r3510  
    5050                    permission=config.ADD_PERMISSIONS[atype.portal_type], 
    5151                    extra_constructors=(constructor,), 
    52                    ).initialize(context) 
     52                    ).initialize(context) 
  • quintagroup.plonegooglesitemaps/trunk/quintagroup/plonegooglesitemaps/browser/commonview.py

    r3163 r3510  
    110110            fname = fspec and fspec.pop() or "id" 
    111111            fengine = queryMultiAdapter((self.context, self.request), 
    112                           interface=IBlackoutFilter, name=fname) 
     112                                        interface=IBlackoutFilter, 
     113                                        name=fname) 
    113114            if fengine: 
    114115                objects = list(fengine.filterOut(objects, fargs)) 
  • quintagroup.plonegooglesitemaps/trunk/quintagroup/plonegooglesitemaps/browser/configletview.py

    r3416 r3510  
    2525    """ 
    2626 
    27     sitemaps = Attribute("Returns mapping of sitemap's type to list of " \ 
     27    sitemaps = Attribute("Returns mapping of sitemap's type to list of " 
    2828                         "appropriate objects") 
    29     hasContentSM = Attribute("Returns boolean about existance of content " \ 
     29    hasContentSM = Attribute("Returns boolean about existance of content " 
    3030                             "sitemap") 
    31     hasMobileSM = Attribute("Returns boolean about existance of mobile " \ 
     31    hasMobileSM = Attribute("Returns boolean about existance of mobile " 
    3232                            "sitemap") 
    3333    hasNewsSM = Attribute("Returns boolean about existance of news sitemap") 
     
    7373        self.pps = queryMultiAdapter((self.context, self.request), 
    7474                                     name="plone_portal_state") 
    75         self.sitemaps = [i.getObject() for i in \ 
     75        self.sitemaps = [i.getObject() for i in 
    7676                         self.tools.catalog()(portal_type='Sitemap')] 
    7777 
     
    9797            smlist = sitemaps.setdefault(sm.getSitemapType(), []) 
    9898            smlist.append({'url': sm.absolute_url(), 'id': sm.id}) 
     99 
    99100        sitemaps['all'] = sitemaps.setdefault('content', []) + \ 
    100                           sitemaps.setdefault('mobile', []) + \ 
    101                           sitemaps.setdefault('news', []) 
     101            sitemaps.setdefault('mobile', []) + sitemaps.setdefault('news', []) 
    102102        return sitemaps 
    103103 
     
    128128                'sm_size': size and splitNum(size) or '', 
    129129                'sm_entries': entries and splitNum(entries) or '', 
    130                } 
     130                } 
    131131 
    132132    def getSitemapData(self, ob): 
     
    150150        portal.manage_delObjects([self.request.id, ]) 
    151151        self.request.RESPONSE.redirect( 
    152                                 urlparse.urljoin(self.context.absolute_url, 
    153                                 'prefs_gsm_verification')) 
     152            urlparse.urljoin(self.context.absolute_url, 
     153                             'prefs_gsm_verification')) 
    154154 
    155155    def getVerificationFiles(self): 
  • quintagroup.plonegooglesitemaps/trunk/quintagroup/plonegooglesitemaps/browser/mobilesitemapview.py

    r3163 r3510  
    1313 
    1414    additional_maps = ( 
    15         ('modification_date', lambda x: DateTime(x.ModificationDate).HTML4()), 
     15        ('modification_date', 
     16         lambda x: x.sitemap_date or DateTime(x.ModificationDate).HTML4()), 
    1617    ) 
    1718 
     
    2223            review_state=self.context.getStates(), 
    2324            object_provides=MOBILE_INTERFACES, 
    24             ) 
     25            is_default_page=False, 
     26        ) 
  • quintagroup.plonegooglesitemaps/trunk/quintagroup/plonegooglesitemaps/browser/newssitemapview.py

    r3163 r3510  
    2121 
    2222        return ( 
    23             ('publication_date', lambda x: x.Date and \ 
    24                                  formatDate(x.Date) or ""), 
     23            ('publication_date', 
     24             lambda x: x.Date and formatDate(x.Date) or ""), 
    2525            ('keywords', lambda x: x.Subject and ', '.join(x.Subject) or ""), 
    2626            ('title', lambda x: x.Title or x.getId or x.id), 
    27             ('name', lambda x: x.Title and \ 
    28                      reTrailingParenthtical.sub("", x.Title) or ""), 
     27            ('name', lambda x: x.Title and 
     28                reTrailingParenthtical.sub("", x.Title) or ""), 
    2929            ('language', lambda x: x.Language or self.default_language()), 
    3030            ('access', lambda x: x.gsm_access or ""), 
    31             ('genres', lambda x: x.gsm_genres and \ 
    32                        ", ".join(x.gsm_genres) or ""), 
     31            ('genres', lambda x: x.gsm_genres and 
     32                ", ".join(x.gsm_genres) or ""), 
    3333            ('stock', lambda x: x.gsm_stock or ""), 
    3434        ) 
     
    4747            review_state=self.context.getStates(), 
    4848            effective={"query": min_date, 
    49                        "range": "min"} 
    50             ) 
     49                       "range": "min"}, 
     50            is_default_page=False 
     51        ) 
  • quintagroup.plonegooglesitemaps/trunk/quintagroup/plonegooglesitemaps/browser/sitemapview.py

    r3163 r3510  
    1111 
    1212    additional_maps = ( 
    13         ('modification_date', lambda x: DateTime(x.ModificationDate).HTML4()), 
     13        ('modification_date', 
     14         lambda x: x.sitemap_date or DateTime(x.ModificationDate).HTML4()), 
    1415    ) 
    1516 
     
    1819            path=self.search_path, 
    1920            portal_type=self.context.getPortalTypes(), 
    20             review_state=self.context.getStates() 
    21             ) 
     21            review_state=self.context.getStates(), 
     22            is_default_page=False 
     23        ) 
  • quintagroup.plonegooglesitemaps/trunk/quintagroup/plonegooglesitemaps/configure.zcml

    r3306 r3510  
    2929    </class> 
    3030 
     31    <adapter name="sitemap_date" factory=".indexers.sitemap_date" /> 
     32 
     33    <subscriber 
     34        for="zope.interface.Interface 
     35             Products.Archetypes.interfaces.IObjectEditedEvent" 
     36        handler=".handlers.reindexParentObjects" />  
     37 
    3138    <!-- Register default filters --> 
    3239    <adapter 
  • quintagroup.plonegooglesitemaps/trunk/quintagroup/plonegooglesitemaps/content/newsextender.py

    r3152 r3510  
    2222 
    2323access_lst = ["Subscription", "Registration"] 
    24 genres_lst = ["PressRelease", "Satire", "Blog", "OpEd", "Opinion", \ 
     24genres_lst = ["PressRelease", "Satire", "Blog", "OpEd", "Opinion", 
    2525              "UserGenerated"] 
    2626 
     
    3131 
    3232    fields = [ 
    33         ExtendableStringField("gsm_access", 
     33        ExtendableStringField( 
     34            "gsm_access", 
    3435            accessor="gsm_access", 
    35             vocabulary=DisplayList(zip(["", ] + access_lst, \ 
     36            vocabulary=DisplayList(zip(["", ] + access_lst, 
    3637                                   ["Open access", ] + access_lst)), 
    3738            default="", 
     
    3940            widget=SelectionWidget( 
    4041                label="Access", 
    41                 description="Specifies whether an article is available to " \ 
    42                     "all readers (in case of the emtpy field, or only to " \ 
     42                description="Specifies whether an article is available to " 
     43                    "all readers (in case of the emtpy field, or only to " 
    4344                    "those with a free or paid membership to your site.", 
    4445                format="radio"), 
    4546        ), 
    46         ExtendableLinesField("gsm_genres", 
     47        ExtendableLinesField( 
     48            "gsm_genres", 
    4749            accessor="gsm_genres", 
    4850            vocabulary=DisplayList(zip(genres_lst, genres_lst)), 
     
    5153            widget=MultiSelectionWidget( 
    5254                label="Genres", 
    53                 description="Select one or more properties for an article, " \ 
    54                     "namely, whether it is a press release, a blog post, an " \ 
    55                     "opinion, an op-ed piece, user-generated content, " \ 
    56                     "or satire.", 
     55                description="Select one or more properties for an article, " 
     56                            "namely, whether it is a press release, " 
     57                            "a blog post, an opinion, an op-ed piece, " 
     58                            "user-generated content, or satire.", 
    5759                format="checkbox"), 
    5860        ), 
    59         ExtendableStringField("gsm_stock", 
     61        ExtendableStringField( 
     62            "gsm_stock", 
    6063            accessor="gsm_stock", 
    6164            default="", 
     
    6366            widget=StringWidget( 
    6467                label="Stock Tickers", 
    65                 description="A comma-separated list of up to 5 stock tickers "\ 
    66                     "of the companies, mutual funds, or other financial " \ 
    67                     "entities that are the main subject of the article. " \ 
    68                     "Relevant primarily for business articles. Each ticker " \ 
    69                     "must be prefixed by the name of its stock exchange, " \ 
    70                     "and must match its entry in Google Finance. " \ 
    71                     "For example, \"NASDAQ:AMAT\" (but not \"NASD:AMAT\"), " \ 
     68                description="A comma-separated list of up to 5 stock tickers " 
     69                    "of the companies, mutual funds, or other financial " 
     70                    "entities that are the main subject of the article. " 
     71                    "Relevant primarily for business articles. Each ticker " 
     72                    "must be prefixed by the name of its stock exchange, " 
     73                    "and must match its entry in Google Finance. " 
     74                    "For example, \"NASDAQ:AMAT\" (but not \"NASD:AMAT\"), " 
    7275                    "or \"BOM:500325\" (but not \"BOM:RIL\").", 
    7376                size=70), 
  • quintagroup.plonegooglesitemaps/trunk/quintagroup/plonegooglesitemaps/content/sitemap.py

    r3163 r3510  
    5252        widget=atapi.MultiSelectionWidget( 
    5353            label=_(u"Review status"), 
    54             description=_(u"You may include items in sitemap depend of " \ 
     54            description=_(u"You may include items in sitemap depend of " 
    5555                          u"their review state."), 
    5656        ), 
     
    6565            label=_(u"Blackout entries"), 
    6666            description=_( 
    67                 u"Objects which match filter condition will be excluded " \ 
    68                 u"from the sitemap.Every record should follow the spec: " \ 
    69                 u"[<filter name>:]<filter arguments>. By default there are " \ 
    70                 u"\"id\" and \"path\" filters (\"id\" used if filter name " \ 
    71                 u"not specified). There is possibility to add new filters. " \ 
    72                 u"Look into README.txt of the " \ 
     67                u"Objects which match filter condition will be excluded " 
     68                u"from the sitemap.Every record should follow the spec: " 
     69                u"[<filter name>:]<filter arguments>. By default there are " 
     70                u"\"id\" and \"path\" filters (\"id\" used if filter name " 
     71                u"not specified). There is possibility to add new filters. " 
     72                u"Look into README.txt of the " 
    7373                u"quintagroup.plonegooglesitemaps package."), 
    7474        ), 
     
    8282        widget=atapi.LinesWidget( 
    8383            label=_(u"URL processing Regular Expressions"), 
    84             description=_(u"Provide regular expressions (in Perl syntax), " \ 
    85                           u"one per line to be applied to URLs before " \ 
    86                           u"including them into Sitemap. Example 1: " \ 
    87                           u"\"s/\/index_html//\" will remove /index_html " \ 
    88                           u"from URLs representing default documents. " \ 
    89                           u"Example 2: " \ 
    90                           u"\"s/[you_site\/internal\/path]/[domain]/\" will " \ 
    91                           u"fix URLs in the sitemap in case they are " \ 
    92                           u"generated on the basis of your site internal" \ 
     84            description=_(u"Provide regular expressions (in Perl syntax), " 
     85                          u"one per line to be applied to URLs before " 
     86                          u"including them into Sitemap. Example 1: " 
     87                          u"\"s/\/index_html//\" will remove /index_html " 
     88                          u"from URLs representing default documents. " 
     89                          u"Example 2: " 
     90                          u"\"s/[you_site\/internal\/path]/[domain]/\" will " 
     91                          u"fix URLs in the sitemap in case they are " 
     92                          u"generated on the basis of your site internal" 
    9393                          u"path rather than your site domain URL. "), 
    9494        ), 
     
    103103        widget=atapi.LinesWidget( 
    104104            label=_(u"Additional URLs"), 
    105             description=_(u"Define additional URLs that are not objects and " \ 
     105            description=_(u"Define additional URLs that are not objects and " 
    106106                          u"that should be included in sitemap."), 
    107107        ), 
     
    115115        widget=atapi.MultiSelectionWidget( 
    116116            label=_(u"Pinging workflow transitions"), 
    117             description=_(u"Select workflow transitions for pinging " \ 
     117            description=_(u"Select workflow transitions for pinging " 
    118118                          u"google on."), 
    119119        ), 
     
    170170            for wf_tr in wf.transitions.values(): 
    171171                if wf_tr.after_script_name in AVAILABLE_WF_SCRIPTS: 
    172                     wf_trans.append(("%s#%s" % (wf_id, wf_tr.id), 
    173                         "%s : %s (%s)" % (wf_id, wf_tr.id, \ 
    174                                           wf_tr.title_or_id()))) 
     172                    wf_trans.append( 
     173                        ("%s#%s" % (wf_id, wf_tr.id), 
     174                         "%s : %s (%s)" % (wf_id, wf_tr.id, 
     175                                           wf_tr.title_or_id()))) 
    175176        return atapi.DisplayList(wf_trans) 
    176177 
  • quintagroup.plonegooglesitemaps/trunk/quintagroup/plonegooglesitemaps/events.py

    r3163 r3510  
    1212        implements(ITransitionEvent) 
    1313 
    14         def __init__(self, obj, workflow, old_state, new_state, transition, \ 
     14        def __init__(self, obj, workflow, old_state, new_state, transition, 
    1515                     status, kwargs): 
    1616            ObjectEvent.__init__(self, obj) 
  • quintagroup.plonegooglesitemaps/trunk/quintagroup/plonegooglesitemaps/filters.py

    r3152 r3510  
    3434            # absolute path filter 
    3535            portal_id = queryMultiAdapter((self.context, self.request), 
    36                          name=u"plone_portal_state").portal().getId() 
     36                                          name=u"plone_portal_state" 
     37                                          ).portal().getId() 
    3738            test_path = '/' + portal_id + fargs 
    3839        elif fargs.startswith("./"): 
  • quintagroup.plonegooglesitemaps/trunk/quintagroup/plonegooglesitemaps/filters.txt

    r3247 r3510  
    157157    >>> reloc = re.compile("<loc>%s([^\<]*)</loc>" % self.portal.absolute_url(), re.S) 
    158158 
    159 Test if all 4 documents and default front-page are in the sitemap without filters. 
     159Test if all 4 documents are in the sitemap without filters. 
    160160 
    161161    >>> no_filters_res = reloc.findall(no_filters_content) 
     
    166166    /doc1 
    167167    /doc2 
    168     /front-page 
    169168 
    170169 
     
    172171================= 
    173172 
    174 Go to the sitemap edit form and add "doc1" and "front-page" lines with "id:"  
     173Go to the sitemap edit form and add "doc1" line with "id:"  
    175174prefix to the "Blackout entries" field. 
    176175 
     
    179178    >>> filtercontrol.value = """ 
    180179    ...     id:doc1 
    181     ...     id:front-page 
    182180    ... """ 
    183181    >>> browser.getControl("Save").click() 
    184182    >>> id_filter_content = browser.contents 
    185183 
    186 "doc1" and "front-page" documents should now be excluded from the 
     184"doc1" document should now be excluded from the 
    187185sitemap. 
    188186 
     
    197195=================== 
    198196 
    199 Suppose we want to exclude "front_page" from portal root and "doc2" 
    200 document, located in test_user_1_ home folder, but leave "doc2"  
     197Suppose we want to exclude "doc2" document,  
     198located in test_user_1_ home folder, but leave "doc2"  
    201199untouched in portal root with all other objects. 
    202200 
     
    205203    >>> filtercontrol.value = """ 
    206204    ...    path:/Members/test_user_1_/doc2 
    207     ...    path:/front-page 
    208205    ... """ 
    209206    >>> browser.getControl("Save").click() 
    210207    >>> path_filter_content = browser.contents 
    211208 
    212 "/Members/test_user_1_/doc2" and "/front_page" objects should 
     209"/Members/test_user_1_/doc2" object should 
    213210be excluded from the sitemap. 
    214211 
     
    227224filter name prefix is specified (e.g. old-fashion filters)?" 
    228225 
    229 Go to the sitemap edit form and add "doc1" and "front-page" 
    230 lines without any filter name prefix to the "Blackout entries"  
     226Go to the sitemap edit form and add "doc1" line 
     227without any filter name prefix to the "Blackout entries"  
    231228field. 
    232229 
     
    235232    >>> filtercontrol.value = """ 
    236233    ...     doc1 
    237     ...     front-page 
    238234    ... """ 
    239235    >>> browser.getControl("Save").click() 
    240236    >>> default_filter_content = browser.contents 
    241237 
    242 "id" filter must be used as default filter. So, all "doc1" and 
    243 "front-page" objects should be excluded from the sitemap. 
     238"id" filter must be used as default filter. So, "doc1" 
     239object should be excluded from the sitemap. 
    244240 
    245241    >>> default_filter_res = reloc.findall(default_filter_content) 
     
    337333    /Members/test_user_1_/doc2 
    338334    /doc2 
    339     /front-page 
  • quintagroup.plonegooglesitemaps/trunk/quintagroup/plonegooglesitemaps/handlers.py

    r3163 r3510  
    33#from quintagroup.plonegooglesitemaps.events import AfterTransitionEvent 
    44from Products.DCWorkflow.interfaces import IAfterTransitionEvent 
    5 from quintagroup.plonegooglesitemaps.utils import ping_google 
     5from Acquisition import aq_parent 
     6 
     7from quintagroup.plonegooglesitemaps.utils import ping_google, isDefaultPage 
    68 
    79 
     
    2325        obj_ptype = object.portal_type 
    2426        for sm in sitemaps: 
    25             if wftrans_name in sm.getPingTransitions() \ 
    26                and obj_ptype in sm.getPortalTypes(): 
     27            if wftrans_name in sm.getPingTransitions() and \ 
     28                   obj_ptype in sm.getPortalTypes(): 
    2729                ping_google(plone_home, sm.id) 
    2830    return 0 
     31 
     32 
     33def reindexParentObjects(obj, event): 
     34    """   Method reindexes folderish objects according 
     35        to modification date from default object 
     36    """ 
     37    def reindex(obj): 
     38        container = aq_parent(obj) 
     39        if isDefaultPage(obj): 
     40            container.reindexObject(['sitemap_date']) 
     41            reindex(container) 
     42 
     43    reindex(obj) 
  • quintagroup.plonegooglesitemaps/trunk/quintagroup/plonegooglesitemaps/profiles/default/catalog.xml

    r2421 r3510  
    11<?xml version="1.0"?> 
    22<object name="portal_catalog" meta_type="Plone Catalog Tool"> 
     3 <index name="sitemap_date" meta_type="FieldIndex"> 
     4   <indexed_attr value="sitemap_date"/> 
     5 </index> 
     6 <column value="sitemap_date"/> 
    37 <column value="canonical_link" update="True" /> 
    48 <column value="Language" update="True" /> 
  • quintagroup.plonegooglesitemaps/trunk/quintagroup/plonegooglesitemaps/setuphandlers.py

    r3163 r3510  
    3131            name = registration.name 
    3232            lsm.unregisterAdapter(factory=factory, 
    33                 required=required, provided=provided, name=name) 
     33                                  required=required, 
     34                                  provided=provided, 
     35                                  name=name) 
    3436            unregistered.append(str(required)) 
    35     logger.info("Unregistered news schema extender adapters for: %s" \ 
     37    logger.info("Unregistered news schema extender adapters for: %s" 
    3638                % unregistered) 
    3739 
     
    8789    if old_product in configlet_ids: 
    8890        controlpanel.unregisterConfiglet(old_product) 
    89         logger.info("Unregistered '%s' configlet from "\ 
     91        logger.info("Unregistered '%s' configlet from " 
    9092                    "portal_controlpanel tool." % old_product) 
    9193    # Remove qPloneGoogleSitemaps skin layer 
     
    9496        paths = [l.strip() for l in skin_paths if not l == old_product] 
    9597        if len(paths) < len(skin_paths): 
    96             logger.info("Removed '%s' from '%s' skin." \ 
     98            logger.info("Removed '%s' from '%s' skin." 
    9799                        % (old_product, skinName)) 
    98100        skins.addSkinSelection(skinName, ','.join(paths)) 
     
    103105    if smaps: 
    104106        logger.info(msg + "Process %s sitemaps." % ( 
    105                 [sm.getPath() for sm in smaps])) 
     107                    [sm.getPath() for sm in smaps])) 
    106108        fields = ['id', 'sitemapType', 'portalTypes', 'states', 
    107109                  'blackout_list', 'reg_exp', 'urls', 'pingTransitions'] 
     
    127129    catalog = getToolByName(site, 'portal_catalog') 
    128130    smaps = catalog(portal_type="Sitemap") 
    129     old_smb = [smb for smb in smaps \ 
     131    old_smb = [smb for smb in smaps 
    130132               if 'qPloneGoogleSitemaps' in str(smb.getObject().__class__)] 
    131133    return old_smb 
  • quintagroup.plonegooglesitemaps/trunk/quintagroup/plonegooglesitemaps/tests/testBlackoutList.py

    r3163 r3510  
    1616    def testDefaultId(self): 
    1717        idfilter = queryMultiAdapter((self.portal, self.app.REQUEST), 
    18                        IBlackoutFilter, name="id") 
     18                                     IBlackoutFilter, name="id") 
    1919        self.assertTrue(idfilter is not None, 
    20             "Not registered default 'id' IBlackoutFilter") 
     20                        "Not registered default 'id' IBlackoutFilter") 
    2121 
    2222    def testDefaultPath(self): 
    2323        pathfilter = queryMultiAdapter((self.portal, self.app.REQUEST), 
    24                          IBlackoutFilter, name="path") 
     24                                       IBlackoutFilter, name="path") 
    2525        self.assertTrue(pathfilter is not None, 
    26             "Not registered default 'path' IBlackoutFilter") 
     26                        "Not registered default 'path' IBlackoutFilter") 
    2727 
    2828 
     
    5959        catpaths, filtered = self.getPreparedLists("id", "doc1") 
    6060        self.assertTrue(type(filtered) in [ListType, TupleType], 
    61             'Object type, returned by filteredOut method of "id" filter '\ 
    62             'not list nor tuple') 
     61                        'Object type, returned by filteredOut method' 
     62                        ' of "id" filter ' 
     63                        'not list nor tuple') 
    6364        excluded = ["/%s/doc1" % self.portal.absolute_url(1), 
    6465                    "/%s/doc1" % self.folder.absolute_url(1)] 
    6566        self.assertTrue( 
    6667            set(catpaths) - set(filtered) == set(excluded), 
    67             'Wrong filtered-out by "id" filter:\nsrc %s\nres %s\nexcluded %s' \ 
     68            'Wrong filtered-out by "id" filter:\nsrc %s\nres %s\nexcluded %s' 
    6869            % (catpaths, filtered, excluded)) 
    6970 
     
    7172        catpaths, filtered = self.getPreparedLists("path", "/doc1") 
    7273        self.assertTrue(type(filtered) in [ListType, TupleType], 
    73             'Object type, returned by filteredOut method of "path" filter '\ 
    74             'not list nor tuple') 
     74                        'Object type, returned by filteredOut method' 
     75                        ' of "path" filter ' 
     76                        'not list nor tuple') 
    7577        excluded = ["/%s/doc1" % self.portal.absolute_url(1)] 
    7678        self.assertTrue( 
    7779            set(catpaths) - set(filtered) == set(excluded), 
    78             'Wrong filtered-out by "path" filter:\nsrc %s\nres %s\nexcluded ' \ 
     80            'Wrong filtered-out by "path" filter:\nsrc %s\nres %s\nexcluded ' 
    7981            '%s' % (catpaths, filtered, excluded)) 
    8082 
     
    8486        catpaths, filtered = self.getPreparedLists("path", "./doc1") 
    8587        self.assertTrue(type(filtered) in [ListType, TupleType], 
    86             'Object type, returned by filteredOut method of "path" utility '\ 
    87             'not list nor tuple') 
     88                        'Object type, returned by filteredOut method' 
     89                        ' of "path" utility ' 
     90                        'not list nor tuple') 
    8891        excluded = ["/%s/doc1" % self.folder.absolute_url(1)] 
    8992        self.assertTrue( 
    9093            set(catpaths) - set(filtered) == set(excluded), 
    91             'Wrong filtered-out by "path" filter:\nsrc %s\nres %s\nexcluded ' \ 
     94            'Wrong filtered-out by "path" filter:\nsrc %s\nres %s\nexcluded ' 
    9295            '%s' % (catpaths, filtered, excluded)) 
    9396 
     
    109112    def testGetNamedFilterUtility(self): 
    110113        catpaths, filtered = self.getPreparedLists("path:/doc1", "/plone/doc1") 
    111         excluded = ["%s/doc1" % self.portal.absolute_url()] 
     114        excluded = ["%s/doc1" % self.portal.absolute_url(), 
     115                    "%s/front-page" % self.portal.absolute_url()] 
    112116        self.assertTrue(set(catpaths) - set(filtered) == set(excluded), 
    113             'Wrong filtered-out by "id" filter:\nsrc %s\nres %s\nexcluded %s' \ 
    114             % (catpaths, filtered, excluded)) 
     117                        'Wrong filtered-out by' 
     118                        ' "id" filter:\nsrc %s\nres %s\nexcluded %s' 
     119                        % (catpaths, filtered, excluded)) 
    115120 
    116121    def testDefaultFilterUtility(self): 
    117122        catpaths, filtered = self.getPreparedLists("id:doc1", "doc1") 
    118123        excluded = ["%s/doc1" % self.portal.absolute_url(), 
     124                    "%s/front-page" % self.portal.absolute_url(), 
    119125                    "%s/doc1" % self.folder.absolute_url()] 
    120126        self.assertTrue(set(catpaths) - set(filtered) == set(excluded), 
    121             'Wrong filtered-out by "id" filter:\nsrc %s\nres %s\nexcluded %s' \ 
    122             % (catpaths, filtered, excluded)) 
     127                        'Wrong filtered-out by "id" ' 
     128                        'filter:\nsrc %s\nres %s\nexcluded %s' 
     129                        % (catpaths, filtered, excluded)) 
    123130        # Now check is output of unnamed filter samed to named one. 
    124131        self.sm.edit(blackout_list=["doc1", ]) 
     
    126133        map(lambda l: l.sort(), (filtered, filtered_dflt)) 
    127134        self.assertTrue(filtered == filtered_dflt, 
    128             'Output of named "id" filter is not same to unnamed one:\n' \ 
    129             'id-named: %s\nunnamed: %s' % (filtered, filtered_dflt)) 
     135                        'Output of named "id" filter ' 
     136                        'is not same to unnamed one:\n' 
     137                        'id-named: %s\nunnamed: %s' 
     138                        % (filtered, filtered_dflt)) 
    130139 
    131140    # def testGetCorrectFilterName(self): 
  • quintagroup.plonegooglesitemaps/trunk/quintagroup/plonegooglesitemaps/tests/testConfiglet.py

    r3163 r3510  
    3232 
    3333    def testAddContentSitemap(self): 
    34         resp = self.submitForm( 
    35                    {'form.button.AddContent': "Add Content Sitemap"}) 
     34        resp = self.submitForm({'form.button.AddContent': 
     35                               "Add Content Sitemap"}) 
    3636        self.assertEqual(resp.getStatus() / 100, 3) 
    3737        sm_edit = "sitemap.xml/edit" 
     
    4141        #self.portal["sitemap.xml"].setPortalTypes(("Documents",)) 
    4242        newform = self.publish(self.settingsURL, basic=self.auth).getBody() 
    43         self.assertEqual('href="http://nohost/plone/sitemap.xml/edit"' in \ 
     43        self.assertEqual('href="http://nohost/plone/sitemap.xml/edit"' in 
    4444                         newform, True) 
    4545        self.assertEqual("form.button.AddContent" in newform, False) 
     
    5454        #self.portal["news-sitemap.xml"].setPortalTypes(("News Item",)) 
    5555        newform = self.publish(self.settingsURL, basic=self.auth).getBody() 
    56         self.assertEqual('href="http://nohost/plone/news-sitemap.xml/edit"' \ 
     56        self.assertEqual('href="http://nohost/plone/news-sitemap.xml/edit"' 
    5757                         in newform, True) 
    5858        self.assertEqual("form.button.AddNews" in newform, False) 
     
    6767        #self.portal["mobile-sitemap.xml"].setPortalTypes(("Documents",)) 
    6868        newform = self.publish(self.settingsURL, basic=self.auth).getBody() 
    69         self.assertEqual('href="http://nohost/plone/mobile-sitemap.xml/edit"' \ 
     69        self.assertEqual('href="http://nohost/plone/mobile-sitemap.xml/edit"' 
    7070                         in newform, True) 
    7171        self.assertEqual("form.button.AddMobile" in newform, False) 
  • quintagroup.plonegooglesitemaps/trunk/quintagroup/plonegooglesitemaps/tests/testGoogleSitemaps.py

    r3163 r3510  
    8989                          '/prefs_gsm_verification' 
    9090        verif_config = self.publish(verifyConfigUrl, self.auth).getBody() 
    91         rexp_input_acitve = re.compile('<input\s+name="verification_file"' \ 
     91        rexp_input_acitve = re.compile('<input\s+name="verification_file"' 
    9292                                       '\s+([^>]*)>', re.I | re.S) 
    9393        rexp_button_acitve = re.compile( 
     
    101101 
    102102        self.assert_(input_acitve and not 'disabled' in input_acitve.groups(1)) 
    103         self.assert_(button_acitve and not 'disabled' in \ 
     103        self.assert_(button_acitve and not 'disabled' in 
    104104                     button_acitve.groups(1)) 
    105105        self.assert_(not delete_button) 
     
    143143 
    144144            self.assertEqual(response.getStatus(), 200) 
    145             self.assert_(fname in \ 
    146                  self.gsm_props.getProperty('verification_filenames', []), 
    147                  self.gsm_props.getProperty('verification_filenames', [])) 
     145            self.assert_(fname in 
     146                         self.gsm_props.getProperty('verification_filenames', 
     147                                                    []), 
     148                         self.gsm_props.getProperty('verification_filenames', 
     149                                                    [])) 
    148150            fnames.append(fname) 
    149151 
    150         self.assertEqual(len([1 for vf in fnames \ 
    151             if vf in \ 
    152                 self.gsm_props.getProperty('verification_filenames', [])]), 2, 
    153                 self.gsm_props.getProperty('verification_filenames', [])) 
     152        self.assertEqual(len([1 for vf in fnames 
     153                         if 
     154                         vf 
     155                         in 
     156                         self.gsm_props.getProperty('verification_filenames', 
     157                                                    [])]), 2, 
     158                         self.gsm_props.getProperty('verification_filenames', 
     159                                                    [])) 
    154160 
    155161 
  • quintagroup.plonegooglesitemaps/trunk/quintagroup/plonegooglesitemaps/tests/testInstallation.py

    r3163 r3510  
    1515        pt = self.portal.portal_types 
    1616        self.assert_('Sitemap' in pt.objectIds(), 
    17             'No "Sitemap" type after installation') 
     17                     'No "Sitemap" type after installation') 
    1818        #Test views 
    1919        views = pt.getTypeInfo('Sitemap').view_methods 
    2020        self.assert_('sitemap.xml' in views, 
    21             'No "sitemap.xml" view for Sitemap type') 
     21                     'No "sitemap.xml" view for Sitemap type') 
    2222        self.assert_('mobile-sitemap.xml' in views, 
    23             'No "mobile-sitemap.xml" view for Sitemap type') 
     23                     'No "mobile-sitemap.xml" view for Sitemap type') 
    2424        self.assert_('news-sitemap.xml' in views, 
    25             'No "news-sitemap.xml" view for Sitemap type') 
     25                     'No "news-sitemap.xml" view for Sitemap type') 
    2626 
    2727    def testGSMProperties(self): 
     
    2929 
    3030        # Test types_not_searched 
    31         self.assert_("Sitemap" in \ 
    32             pp['site_properties'].getProperty('types_not_searched'), 
    33             'No "Sitemap" added to types not searched on installation') 
     31        self.assert_("Sitemap" in 
     32                     pp['site_properties'].getProperty('types_not_searched'), 
     33                     'No "Sitemap" added to types not searched ' 
     34                     'on installation') 
    3435        # Test metaTypesNotToList 
    35         self.assert_("Sitemap" in \ 
    36             pp['navtree_properties'].getProperty('metaTypesNotToList'), 
    37             'No "Sitemap" added to types not to list on installation') 
     36        self.assert_("Sitemap" in 
     37                     pp['navtree_properties']. 
     38                     getProperty('metaTypesNotToList'), 
     39                     'No "Sitemap" added to types not to ' 
     40                     'list on installation') 
    3841 
    3942        # Test 'googlesitemap_properties' 
    4043        self.assert_('googlesitemap_properties' in pp.objectIds(), 
    41             'No "googlesitemap_properties" after installation') 
     44                     'No "googlesitemap_properties" after installation') 
    4245        qsmprops = pp['googlesitemap_properties'] 
    4346        self.assert_(qsmprops.hasProperty('verification_filenames'), 
    44             'No "verification_filenames" property added on installation') 
     47                     'No "verification_filenames" property added on ' 
     48                     'installation') 
    4549 
    4650    def testSkins(self): 
    4751        ps = self.portal.portal_skins 
    4852        self.assert_('plonegooglesitemaps' in ps.objectIds(), 
    49             'No "plonegooglesitemaps" skin layer in portal_skins') 
    50         self.assert_('plonegooglesitemaps' in \ 
     53                     'No "plonegooglesitemaps" skin ' 
     54                     'layer in portal_skins') 
     55        self.assert_('plonegooglesitemaps' in 
    5156                     ps.getSkinPath(ps.getDefaultSkin()), 
    52             'No "plonegooglesitemaps" skin layer in default skin') 
     57                     'No "plonegooglesitemaps" skin layer ' 
     58                     'in default skin') 
    5359 
    5460    def testConfiglet(self): 
    5561        cp = self.portal.portal_controlpanel 
    56         self.assert_([1 for ai in cp.listActionInfos() \ 
    57                       if ai['id'] == 'GoogleSitemaps'], 
    58             'No "GoogleSitemaps" configlet added to plone control panel') 
     62        self.assert_([1 for ai in cp.listActionInfos() 
     63                     if ai['id'] == 'GoogleSitemaps'], 
     64                     'No "GoogleSitemaps" configlet ' 
     65                     'added to plone control panel') 
    5966 
    6067    def testNewsSchemaExtenderRegistered(self): 
     
    6269        news = self.portal.invokeFactory("News Item", id="test_news") 
    6370        news = getattr(self.portal, "test_news") 
    64         self.assertNotEqual(lsm.queryAdapter( 
    65                 news, interface=ISchemaExtender, 
    66                 name="quintagroup.plonegooglesitemaps.newssitemapextender"), 
    67             None) 
     71        adapter = "quintagroup.plonegooglesitemaps.newssitemapextender" 
     72        self.assertNotEqual(lsm.queryAdapter(news, 
     73                                             interface=ISchemaExtender, 
     74                                             name=adapter), 
     75                            None) 
    6876 
    6977    def testUpdateCatalog(self): 
     
    135143        news = getattr(self.portal, "test_news") 
    136144        self.assertEqual(lsm.queryAdapter(news, interface=ISchemaExtender), 
    137             None) 
     145                         None) 
    138146 
    139147    def testConfigletUninstall(self): 
     
    142150            True, '%s is already installed' % PRODUCT) 
    143151        configTool = self.portal.portal_controlpanel 
    144         self.assertEqual('GoogleSitemaps' in [a.getId() for a in \ 
    145                                               configTool.listActions()], False, 
    146             'Configlet found after uninstallation') 
     152        self.assertEqual('GoogleSitemaps' in [a.getId() for a in 
     153                                              configTool.listActions()], 
     154                         False, 
     155                         'Configlet found after uninstallation') 
    147156 
    148157    def test_browserlayer_uninstall(self): 
     
    152161        from plone.browserlayer import utils 
    153162        self.assertEqual(IGoogleSitemapsLayer in utils.registered_layers(), 
    154             False, "Still registered 'IGoogleSitemapsLayer' browser layer") 
     163                         False, "Still registered 'IGoogleSitemapsLayer' " 
     164                         "browser layer") 
    155165 
    156166 
  • quintagroup.plonegooglesitemaps/trunk/quintagroup/plonegooglesitemaps/tests/testMobileSitemaps.py

    r3163 r3510  
    4040    def reParse(self): 
    4141        # Parse mobile sitemap 
    42         self.sitemap = self.publish("/" + self.portal.absolute_url(1) + \ 
     42        self.sitemap = self.publish("/" + self.portal.absolute_url(1) + 
    4343                                    "/mobile-sitemap.xml", 
    4444                                    "%s:%s" % (portal_owner, 
     
    6464 
    6565    def test_lastmod(self): 
    66         md = [f for k, f in \ 
    67               mobilesitemapview.MobileSitemapView.additional_maps \ 
     66        md = [f for k, f in 
     67              mobilesitemapview.MobileSitemapView.additional_maps 
    6868              if k == 'modification_date'][0] 
    6969        bmobile = self.portal.portal_catalog(id="my_mobile")[0] 
    7070        self.assert_("lastmod" in self.start.keys()) 
    71         self.assert_(md(bmobile) in self.data, "Wrong 'modified date':" \ 
    72                      " must be '%s', but exist: '%s'" \ 
     71        self.assert_(md(bmobile) in self.data, "Wrong 'modified date':" 
     72                     " must be '%s', but exist: '%s'" 
    7373                     % (md(bmobile), self.data)) 
    7474 
     
    8585        self.default_layout = mobile_sm.getProperty('layout', "") 
    8686        self.mobile_view = queryMultiAdapter((mobile_sm, self.portal.REQUEST), 
    87                                name=self.default_layout) 
     87                                             name=self.default_layout) 
    8888 
    8989    def testLayout(self): 
     
    100100    def testAdditionalMaps(self): 
    101101        self.assert_(hasattr(self.mobile_view, "additional_maps")) 
    102         self.assert_([1 for k, f in self.mobile_view.additional_maps \ 
     102        self.assert_([1 for k, f in self.mobile_view.additional_maps 
    103103                      if k == "modification_date"]) 
    104104 
  • quintagroup.plonegooglesitemaps/trunk/quintagroup/plonegooglesitemaps/tests/testNewsSitemaps.py

    r3163 r3510  
    4747    def reParse(self): 
    4848        # Parse news sitemap 
    49         self.sitemap = self.publish("/" + self.portal.absolute_url(1) + \ 
     49        self.sitemap = self.publish("/" + self.portal.absolute_url(1) + 
    5050                                    "/news-sitemaps", 
    5151                                    "%s:%s" % (portal_owner, 
     
    149149    def reParse(self): 
    150150        # Parse news sitemap 
    151         self.sitemap = self.publish("/" + self.portal.absolute_url(1) + \ 
     151        self.sitemap = self.publish("/" + self.portal.absolute_url(1) + 
    152152                                    "/news-sitemaps", 
    153153                                    "%s:%s" % (portal_owner, default_password) 
     
    213213        # Now register SchemaExtender adapter and 
    214214        # check if it present in Local SiteManger only 
     215        adapter = "quintagroup.plonegooglesitemaps.newssitemapextender" 
    215216        self.assertNotEqual(localsm, globalsm) 
    216217        self.assertNotEqual(localsm.queryAdapter( 
    217                 self.my_news, ISchemaExtender, 
    218                 name="quintagroup.plonegooglesitemaps.newssitemapextender"), 
    219             None) 
     218                            self.my_news, ISchemaExtender, 
     219                            name=adapter), 
     220                            None) 
    220221        self.assertEqual(globalsm.queryAdapter( 
    221                 self.my_news, ISchemaExtender, 
    222                 name="quintagroup.plonegooglesitemaps.newssitemapextender"), 
    223             None) 
     222                         self.my_news, ISchemaExtender, 
     223                         name=adapter), 
     224                         None) 
    224225 
    225226 
     
    270271        self.assert_(INewsSitemapProvider.providedBy(self.taggable_news)) 
    271272        schema = self.taggable_news.Schema().keys() 
    272         self.assert_("gsm_access" in schema, "no 'gsm_access' in schema: %s" \ 
     273        self.assert_("gsm_access" in schema, "no 'gsm_access' in schema: %s" 
    273274                     % schema) 
    274         self.assert_("testField" in schema, "no 'testField' in schema: %s" \ 
     275        self.assert_("testField" in schema, "no 'testField' in schema: %s" 
    275276                     % schema) 
    276277 
     
    306307                func(self.brain) 
    307308            except Exception, e: 
    308                 self.fail("Wrong processing 'Missing' value for '%s': %s" \ 
     309                self.fail("Wrong processing 'Missing' value for '%s': %s" 
    309310                          % (n, str(e))) 
    310311 
  • quintagroup.plonegooglesitemaps/trunk/quintagroup/plonegooglesitemaps/tests/testPinging.py

    r3163 r3510  
    1111    def afterSetUp(self): 
    1212        super(TestPinging, self).afterSetUp() 
    13         self.workflow.setChainForPortalTypes( 
    14                 pt_names=('News Item', 'Document'), 
    15                 chain="simple_publication_workflow") 
     13        workflow = "simple_publication_workflow" 
     14        self.workflow.setChainForPortalTypes(pt_names=('News Item', 
     15                                                       'Document'), 
     16                                             chain=workflow) 
    1617        gsm_properties = 'googlesitemap_properties' 
    1718        self.gsm_props = self.portal.portal_properties[gsm_properties] 
     
    4344            sys.stdout = back_out 
    4445 
    45         self.assert_('Pinged %s sitemap to Google' \ 
     46        self.assert_('Pinged %s sitemap to Google' 
    4647                     % self.contentSM.absolute_url() in data, 
    4748                     "Not pinged %s: '%s'" % (self.contentSM.id, data)) 
    48         self.assert_('Pinged %s sitemap to Google' \ 
     49        self.assert_('Pinged %s sitemap to Google' 
    4950                     % self.newsSM.absolute_url() in data, 
    5051                     "Not pinged %s: '%s'" % (self.newsSM.id, data)) 
     
    6061            sys.stdout = back_out 
    6162 
    62         self.assert_('Pinged %s sitemap to Google' \ 
     63        self.assert_('Pinged %s sitemap to Google' 
    6364                     % self.newsSM.absolute_url() in data, 
    6465                     "Not pinged %s: '%s'" % (self.newsSM.id, data)) 
    65         self.assert_(not 'Pinged %s sitemap to Google' \ 
     66        self.assert_(not 'Pinged %s sitemap to Google' 
    6667                     % self.contentSM.absolute_url() in data, 
    6768                     "Pinged %s on news: '%s'" % (self.contentSM.id, data)) 
     
    8283            sys.stdout = back_out 
    8384 
    84         self.assert_('Pinged %s sitemap to Google' \ 
     85        self.assert_('Pinged %s sitemap to Google' 
    8586                     % self.contentSM.absolute_url() in data, 
    8687                     "Not pinged %s: '%s'" % (self.contentSM.id, data)) 
    87         self.assert_('Pinged %s sitemap to Google' \ 
     88        self.assert_('Pinged %s sitemap to Google' 
    8889                     % self.newsSM.absolute_url() in data, 
    8990                     "Not pinged %s: '%s'" % (self.newsSM.id, data)) 
  • quintagroup.plonegooglesitemaps/trunk/quintagroup/plonegooglesitemaps/tests/testSecurity.py

    r3163 r3510  
    1414 
    1515    def getview(self, vpath): 
    16         return self.publish("/" + self.portal.absolute_url(1) + \ 
     16        return self.publish("/" + self.portal.absolute_url(1) + 
    1717                            "/" + vpath, self.auth) 
    1818 
     
    4444        super(TestSecurityConfigletNotManager, self).afterSetUp() 
    4545        self.auth = "mem:mem" 
    46         self.portal.portal_membership.addMember('mem', 'mem', ('Member',), []) 
     46        self.portal.portal_membership.addMember('mem', 
     47                                                'mem', 
     48                                                ('Member',), 
     49                                                []) 
    4750 
    4851    def testConfigOverview(self): 
     
    5962 
    6063 
    61 SM_TYPES = { 
    62   "content": {"id": "sitemap.xml", "types": ("Document",)}, 
    63   "news": {"id": "news-sitemap.xml", "types": ("News Item",)}, 
    64   "mobile": {"id": "mobile-sitemap.xml", "types": ("Document",)}, 
    65 } 
     64SM_TYPES = {"content": {"id": "sitemap.xml", "types": ("Document",)}, 
     65            "news": {"id": "news-sitemap.xml", "types": ("News Item",)}, 
     66            "mobile": {"id": "mobile-sitemap.xml", "types": ("Document",)}, 
     67            } 
    6668from DateTime import DateTime 
    6769 
  • quintagroup.plonegooglesitemaps/trunk/quintagroup/plonegooglesitemaps/tests/testSitemaps.py

    r3167 r3510  
    5252 
    5353    def testAutoSetLayout(self): 
    54         response = self.publish('/%s/createObject?type_name=Sitemap' \ 
     54        response = self.publish('/%s/createObject?type_name=Sitemap' 
    5555                                % self.portal.absolute_url(1), basic=self.auth) 
    5656        location = response.getHeader('location') 
     
    8787        wftrans = self.contentSM.getWorkflowTransitions() 
    8888        self.assertEqual(isinstance(wftrans, atapi.DisplayList), True) 
    89         self.assertEqual("simple_publication_workflow#publish" in \ 
     89        self.assertEqual("simple_publication_workflow#publish" in 
    9090                         wftrans.keys(), True) 
    9191 
     
    9595        self.contentSM.edit(blackout_list=bolist) 
    9696        value = self.contentSM.getBlackout_list() 
    97         self.assertTrue(value == expect, "Blackout list was not cleaned "\ 
    98              "up from whitespaces: %s" % str(value)) 
     97        self.assertTrue(value == expect, "Blackout list was not cleaned " 
     98                                         "up from whitespaces: %s" 
     99                                         % str(value)) 
    99100 
    100101 
     
    179180    def afterSetUp(self): 
    180181        super(TestPinging, self).afterSetUp() 
     182        workflow = "simple_publication_workflow" 
    181183        self.workflow.setChainForPortalTypes(pt_names=('News Item', 
    182                  'Document'), chain="simple_publication_workflow") 
     184                                                       'Document'), 
     185                                             chain=workflow) 
    183186        gsm_properties = 'googlesitemap_properties' 
    184187        self.gsm_props = self.portal.portal_properties[gsm_properties] 
     
    210213            sys.stdout = back_out 
    211214 
    212         self.assert_('Pinged %s sitemap to Google' \ 
     215        self.assert_('Pinged %s sitemap to Google' 
    213216                     % self.contentSM.absolute_url() in data, 
    214217                     "Not pinged %s: '%s'" % (self.contentSM.id, data)) 
    215         self.assert_('Pinged %s sitemap to Google' \ 
     218        self.assert_('Pinged %s sitemap to Google' 
    216219                     % self.newsSM.absolute_url() in data, 
    217220                     "Not pinged %s: '%s'" % (self.newsSM.id, data)) 
     
    227230            sys.stdout = back_out 
    228231 
    229         self.assert_('Pinged %s sitemap to Google' \ 
     232        self.assert_('Pinged %s sitemap to Google' 
    230233                     % self.newsSM.absolute_url() in data, 
    231234                     "Not pinged %s: '%s'" % (self.newsSM.id, data)) 
    232         self.assert_(not 'Pinged %s sitemap to Google' \ 
     235        self.assert_(not 'Pinged %s sitemap to Google' 
    233236                     % self.contentSM.absolute_url() in data, 
    234237                     "Pinged %s on news: '%s'" % (self.contentSM.id, data)) 
     
    249252            sys.stdout = back_out 
    250253 
    251         self.assert_('Pinged %s sitemap to Google' \ 
     254        self.assert_('Pinged %s sitemap to Google' 
    252255                     % self.contentSM.absolute_url() in data, 
    253256                     "Not pinged %s: '%s'" % (self.contentSM.id, data)) 
    254         self.assert_('Pinged %s sitemap to Google' \ 
     257        self.assert_('Pinged %s sitemap to Google' 
    255258                     % self.newsSM.absolute_url() in data, 
    256259                     "Not pinged %s: '%s'" % (self.newsSM.id, data)) 
     
    285288        filtered = SitemapView(self.sm, TestRequest()).getFilteredObjects() 
    286289        self.assertEqual(map(lambda x: x.getPath(), filtered), 
    287                         [self.inner_path, ]) 
     290                         [self.inner_path, ]) 
    288291 
    289292    def testNewsSitemap(self): 
     
    302305 
    303306 
     307class TestSitemapDate(TestCase): 
     308    """ Method dedicated to test index (sitemap_date) in portal_catalog 
     309    """ 
     310    def afterSetUp(self): 
     311        super(TestSitemapDate, self).afterSetUp() 
     312 
     313        from time import sleep 
     314 
     315        # sequence is important for testing 
     316        # ("test-folder1", "test-folder2", "index_html") 
     317        self.folder1 = _createObjectByType("Folder", self.portal, 
     318                                           id="test-folder1") 
     319 
     320        # create objects with different sitemap_date 
     321        sleep(1) 
     322        self.folder2 = _createObjectByType("Folder", self.folder1, 
     323                                           id="test-folder2") 
     324        sleep(1) 
     325        self.page = _createObjectByType("Document", self.folder2, 
     326                                        id="index_html") 
     327 
     328    def getCatalogSitemapDate(self, obj): 
     329        """ Method gets sitemap_date from portal_catalog """ 
     330        return self.portal.portal_catalog(id=obj.id)[0].sitemap_date 
     331 
     332    def getIndexerSitemapDate(self, obj): 
     333        """  Method gets modification date from 
     334            function sitemap_date (indexer) 
     335        """ 
     336        from quintagroup.plonegooglesitemaps.indexers import sitemap_date 
     337 
     338        modification_date = sitemap_date(obj) 
     339        # you have had to use '__call__' since Plone 3.3 
     340        if callable(modification_date): 
     341            modification_date = modification_date() 
     342        return modification_date 
     343 
     344    def testReindexParentObjects(self): 
     345        """ Method tests handler (reindexParentObjects) """ 
     346        from quintagroup.plonegooglesitemaps.handlers \ 
     347            import reindexParentObjects 
     348 
     349        # set default page 
     350        self.folder2.setDefaultPage("index_html") 
     351        reindexParentObjects(self.page, None) 
     352 
     353        self.assertEqual(self.getCatalogSitemapDate(self.page), 
     354                         self.getCatalogSitemapDate(self.folder2)) 
     355        self.assertNotEqual(self.getCatalogSitemapDate(self.page), 
     356                            self.getCatalogSitemapDate(self.folder1)) 
     357 
     358        # set default page 
     359        self.folder1.setDefaultPage("test-folder2") 
     360        reindexParentObjects(self.folder2, None) 
     361        self.assertEqual(self.getCatalogSitemapDate(self.page), 
     362                         self.getCatalogSitemapDate(self.folder1)) 
     363 
     364    def testSitemapDateIndexer(self): 
     365        """ Method tests index (sitemap_date) """ 
     366        last_date = self.getCatalogSitemapDate(self.folder1) 
     367        self.assertEqual(last_date, self.getIndexerSitemapDate(self.folder1)) 
     368        self.folder1.setDefaultPage("test-folder2") 
     369        self.assertNotEqual(last_date, 
     370                            self.getIndexerSitemapDate(self.folder1)) 
     371 
     372 
    304373def test_suite(): 
    305374    suite = unittest.TestSuite() 
     
    308377    suite.addTest(unittest.makeSuite(TestPinging)) 
    309378    suite.addTest(unittest.makeSuite(TestContextSearch)) 
     379    suite.addTest(unittest.makeSuite(TestSitemapDate)) 
    310380    return suite 
    311381 
  • quintagroup.plonegooglesitemaps/trunk/quintagroup/plonegooglesitemaps/tests/testUpgrade.py

    r3163 r3510  
    4242        # Test registered upgrade profiles 
    4343        pids = [i['id'] for i in self.setup.listProfileInfo()] 
    44         self.assertEqual("quintagroup.plonegooglesitemaps:upgrade_1_0_to_1_1" \ 
     44        self.assertEqual("quintagroup.plonegooglesitemaps:upgrade_1_0_to_1_1" 
    4545                         in pids, True) 
    46         self.assertEqual("quintagroup.plonegooglesitemaps:upgrade_1_1_to_1_2" \ 
     46        self.assertEqual("quintagroup.plonegooglesitemaps:upgrade_1_1_to_1_2" 
    4747                         in pids, True) 
    4848 
  • quintagroup.plonegooglesitemaps/trunk/quintagroup/plonegooglesitemaps/tests/test_doctest.py

    r3163 r3510  
    2828            test_class=DocTestCase, globs=globals(), 
    2929            optionflags=doctest.NORMALIZE_WHITESPACE | doctest.ELLIPSIS), 
    30                        # | doctest.REPORT_ONLY_FIRST_FAILURE | 
    31         ]) 
     30        # | doctest.REPORT_ONLY_FIRST_FAILURE | 
     31    ]) 
    3232 
    3333if __name__ == '__main__': 
  • quintagroup.plonegooglesitemaps/trunk/quintagroup/plonegooglesitemaps/upgrades.py

    r3152 r3510  
    1818    portal = purl.getPortalObject() 
    1919    allCTTypes = types.listContentTypes() 
    20     obj_metatypes = [m.content_meta_type for m in types.objectValues() \ 
     20    obj_metatypes = [m.content_meta_type for m in types.objectValues() 
    2121                     if m.getId() in allCTTypes] 
    2222    convertor = CanonicalConvertor(portal_url=purl()) 
    23     portal.ZopeFindAndApply( 
    24                             portal, 
     23    portal.ZopeFindAndApply(portal, 
    2524                            obj_metatypes=','.join(obj_metatypes), 
    2625                            apply_func=renameProperty, 
    27                             search_sub=1, 
    28                             ) 
     26                            search_sub=1,) 
    2927    print convertor.getLogs() 
    3028 
  • quintagroup.plonegooglesitemaps/trunk/quintagroup/plonegooglesitemaps/utils.py

    r3163 r3510  
    11from urllib2 import urlopen 
    2 from urllib  import quote as urlquote 
     2from urllib import quote as urlquote 
     3from DateTime import DateTime 
    34 
    45from Globals import DevelopmentMode 
    56#from OFS.ObjectManager import BadRequestException 
     7from Products.CMFCore.utils import getToolByName 
    68 
    79from quintagroup.plonegooglesitemaps import config 
     
    2022    sitemap_url = urlquote(resurl) 
    2123 
    22     g = urlopen('http://www.google.com/webmasters/tools/ping?sitemap=' + \ 
     24    g = urlopen('http://www.google.com/webmasters/tools/ping?sitemap=' + 
    2325                sitemap_url) 
    2426    g.read() 
     
    2628 
    2729    return 0 
     30 
     31 
     32def getDefaultPage(obj): 
     33    """ Method gets default page for object (folderish) """ 
     34    plone_tool = getToolByName(obj, 'plone_utils') 
     35    return plone_tool.getDefaultPage(obj) 
     36 
     37 
     38def isDefaultPage(obj): 
     39    """ If object is default page then return True""" 
     40    plone_tool = getToolByName(obj, 'plone_utils') 
     41    return plone_tool.isDefaultPage(obj) 
     42 
     43 
     44def dateTime(obj): 
     45    """ Method gets modification date """ 
     46    return DateTime(obj.ModificationDate()) 
  • quintagroup.plonegooglesitemaps/trunk/setup.py

    r3413 r3510  
    33import os 
    44 
    5 version = '1.7.1' 
     5version = '1.8.0' 
    66 
    77tests_require = ['zope.testing', 
     
    1010setup(name='quintagroup.plonegooglesitemaps', 
    1111      version=version, 
    12       description="Allows Plone websites to get better visibility for " \ 
     12      description="Allows Plone websites to get better visibility for " 
    1313                  "Google search engine", 
    1414      long_description=open("README.txt").read() + "\n" + 
    15                        open(os.path.join("docs", "HISTORY.txt")).read(), 
     15           open(os.path.join("docs", "HISTORY.txt")).read(), 
    1616      # Get more strings from 
    1717      # http://pypi.python.org/pypi?%3Aaction=list_classifiers 
    1818      classifiers=[ 
    19         "Framework :: Plone", 
    20         "Programming Language :: Python", 
    21         ], 
     19          "Framework :: Plone", 
     20          "Programming Language :: Python", 
     21      ], 
    2222      keywords='plone google sitemap quintagroup search engine', 
    2323      author='Quintagroup', 
    2424      author_email='info@quintagroup.com', 
    25       url='http://svn.quintagroup.com/products/' \ 
     25      url='http://svn.quintagroup.com/products/' 
    2626          'quintagroup.plonegooglesitemaps', 
    2727      license='GPL', 
Note: See TracChangeset for help on using the changeset viewer.