示例#1
0
    def test_strip_whitespace(self):

        self.assertEquals("strange-", prepare_SearchableText("strange-, "))

        self.assertEquals("text", prepare_SearchableText("    text   "))

        self.assertEquals("text   text", prepare_SearchableText("  text   text"))
示例#2
0
    def __call__(self):
        context = aq_inner(self.context)
        q = self.request.form.get('term', None)
        self.limit = int(self.request.form.get('limit', 10))
        path = self.request.form.get('path', None)

        plone_utils = getToolByName(context, 'plone_utils')
        self.pretty_title_or_id = plone_utils.pretty_title_or_id
        self.normalizeString = plone_utils.normalizeString
        plone_view = getMultiAdapter((context, self.request), name='plone')
        self.get_icon = plone_view.getIcon

        pprops = getToolByName(context, 'portal_properties')
        sprops = getattr(pprops, 'site_properties', None)
        self.useViewAction = []
        if sprops is not None:
            self.useViewAction = sprops.getProperty('typesUseViewActionInListings',
                                                    [])

        registry = getUtility(IRegistry)
        self.settings = registry.forInterface(ILiveSearchSettings)

        q = prepare_SearchableText(q)
        r = q + '*'
        self.searchterms = url_quote_plus(r)

        site_encoding = plone_utils.getSiteEncoding()
        if path is None:
            path = getNavigationRoot(context)
        catalog = getToolByName(context, 'portal_catalog')
        friendly_types = plone_utils.getUserFriendlyTypes()

        self.facet_params = context.restrictedTraverse(
            '@@search-facets/facet_parameters')()

        self.searchterm_query = '?searchterm=%s' % url_quote_plus(q)

        if self.settings.grouping:
            results = catalog(SearchableText=r, portal_type=friendly_types,
                              request_handler='livesearch', path=path,
                              sort_limit=self.settings.group_search_limit)[:self.settings.group_search_limit]

        else:
            results = catalog(SearchableText=r, portal_type=friendly_types,
                              request_handler='livesearch', path=path,
                              sort_limit=self.limit)[:self.limit]

        self.request.response.setHeader(
            'Content-Type', 'application/json;charset=%s' % site_encoding)

        return self.get_results_as_json(results)
示例#3
0
    def test_replace_inavlid_chars_with_whitespace(self):
        self.assertEquals("D abcd", prepare_SearchableText("D'abcd"))

        self.assertEquals("10 000", prepare_SearchableText("10'000"))

        self.assertEquals("*****@*****.**", prepare_SearchableText("*****@*****.**"))

        self.assertEquals("strange- strange", prepare_SearchableText("strange-,strange"))

        self.assertEquals("singlequoted", prepare_SearchableText("'singlequoted'"))

        self.assertEquals("doublequoted", prepare_SearchableText('"doublequoted"'))

        self.assertEquals("The list  one", prepare_SearchableText("The list: one"))
示例#4
0
    def test_replace_multispace_with_whitespace(self):

        multispace = u"\u3000".encode("utf-8")
        self.assertEquals("text text", prepare_SearchableText("text" + multispace + "text"))
示例#5
0
 def test_unicode_input(self):
     self.assertEquals("\xc3\xb6 text", prepare_SearchableText(u"    \xf6 text   "))
示例#6
0
 def test_umlauts(self):
     self.assertEquals("\xc3\xb6 text", prepare_SearchableText("    \xc3\xb6 text   "))