Ignore:
Timestamp:
Oct 28, 2010 6:10:51 PM (14 years ago)
Author:
mylan
Message:

#228: Fix overhead in parsing of filter arguments. Added test (breakage yet)

Location:
quintagroup.plonegooglesitemaps/branches/blacklist/quintagroup/plonegooglesitemaps
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • quintagroup.plonegooglesitemaps/branches/blacklist/quintagroup/plonegooglesitemaps/browser/commonview.py

    r2940 r2941  
    8484        """Return blkack-out filtered objects 
    8585          Every record in blackout_list filter should follow the spec: 
    86              [extra filter data, separated by ':':][<filter name>:]<filter data> 
     86            [<filter name>:]<filter arguments> 
    8787          For example: 
    8888          1|  index.html 
     
    9090          3|  path:/folder_1_level/obj_in_folder 
    9191          4|  path:./folder_near_sitemap/obj_in_folder 
    92           5|  extra_arg1:extra_arg2:super_filter:super arg-1, super arg-2 
     92          5|  foo_filter:arg-1, arg-2 
    9393          
    9494          1->used default "id" filter - remove "index.html" objects; 
     
    9797              path from the root of the plone site; 
    9898          4->same to 3), but path get from the folder, where sitemap is located; 
    99           5->filter name is "super_filter" (must be registered IBlackoutFilterUtility, 
    100              named "seoptimzier.blackoutfilter.super_filter:), which get list of extra 
    101              parameters, e.g. [extra_arg1,extra_arg2] to the filterOut method in 
    102              "extras" option, and get filter arguments: super arg-1, super arg-2 
     99          5->filter name is "foo_filter" (must be registered IBlackoutFilter, 
     100             named "foo_filter"), which get filter arguments: arg-1, arg-2 
    103101           
    104           class SuperFilterUtility(object): 
    105               def filterOut(self, fdata, fargs, **kwargs): 
    106                   sitemap = kwargs.get("sitemap") 
    107                   extras = kwargs.get("extras") # [extra_arg1,extra_arg2] 
     102          class FooFilterUtility(object): 
     103              def __init__(self, context, request): 
     104                  self.context = context 
     105                  self.request = request 
     106              def filterOut(self, fdata, fargs): 
    108107                  # some logic to filter-out fdata by fargs with taking into 
    109                   # consideration extras ... 
     108                  # consideration self.context and self.request, if needed. 
    110109        """ 
    111110        blackout_list = filter(None, self.context.getBlackout_list()) 
    112111        for frec in blackout_list: 
    113             fspec = frec.split(":") 
     112            fspec = frec.split(":", 1) 
    114113            fargs = fspec.pop() 
    115114            fname = fspec and fspec.pop() or "id" 
  • quintagroup.plonegooglesitemaps/branches/blacklist/quintagroup/plonegooglesitemaps/tests/testBlackoutList.py

    r2940 r2941  
    44from base import * 
    55from types import ListType, TupleType 
     6from zope import component 
    67from zope.component import queryMultiAdapter 
    78 
     
    8990 
    9091 
    91  
    9292class TestBlacklistFormProcessing(TestFilterMixin): 
    9393 
     
    125125            'id-named: %s\nunnamed: %s' % (filtered, filtered_dflt)) 
    126126 
     127    # def testGetCorrectFilterName(self): 
     128    #     call_names = [] 
     129    #     origQMA = component._api.queryMultiAdapter 
     130    #     def patchQMA(objects, interface=Interface, name=u'', context=None): 
     131    #         call_names.append(name) 
     132    #         origQMA(objects, interface=interface, name=name, context=context) 
     133    #     component.queryMutliAdapter = patchQMA 
     134    #     self.sm.edit(blackout_list="FooFilterName:arg1:arg2:doc1") 
     135    #     self.smview.results() 
     136    #     self.assertTrue("FooFilterName" in call_names, 
     137    #         "Wrong filter name parsing - no FooFilterName in %s" % call_names) 
     138    #     component._api.queryMutliAdapter = origQMA 
     139         
     140         
     141         
    127142 
    128143def test_suite(): 
Note: See TracChangeset for help on using the changeset viewer.