From a396a443661b4f6c7132f59cd8754e4575b9e7aa Mon Sep 17 00:00:00 2001 From: Kazuhiko Shiozaki <kazuhiko@nexedi.com> Date: Mon, 24 Nov 2014 11:10:47 +0100 Subject: [PATCH] fix WebSite_getFullTextSearchResultList so that 'any language' search and 'newest only' search work. --- .../WebSite_getFullTextSearchResultList.xml | 20 +++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/bt5/erp5_km/SkinTemplateItem/portal_skins/erp5_km/WebSite_getFullTextSearchResultList.xml b/bt5/erp5_km/SkinTemplateItem/portal_skins/erp5_km/WebSite_getFullTextSearchResultList.xml index 2978ea605a..4e2b6db298 100644 --- a/bt5/erp5_km/SkinTemplateItem/portal_skins/erp5_km/WebSite_getFullTextSearchResultList.xml +++ b/bt5/erp5_km/SkinTemplateItem/portal_skins/erp5_km/WebSite_getFullTextSearchResultList.xml @@ -53,12 +53,28 @@ <value> <string>"""\n Return the result list of all documents found by specified keyword arguments.\n """\n -return context.getDocumentValueList(**kw)\n +import re\n +# if language is not specified in search_text, it means any language.\n +# if language is specified in search_text, the query anyway includes explicit\n +# language condition.\n +kw[\'all_languages\'] = True\n +if re.search(r\'\\bnewest:yes\\b\', search_text):\n + #...and now we check for only the newest versions\n + # but we need to preserve order\n + language_match = re.search(r\'\\blanguage:(.+?)\\b\', search_text)\n + if language_match:\n + language = language_match.groups()[0]\n + else:\n + language = None\n + return [doc.getLatestVersionValue(language=language) \\\n + for doc in context.getDocumentValueList(search_text=search_text, **kw)]\n +else:\n + return context.getDocumentValueList(search_text=search_text, **kw)\n </string> </value> </item> <item> <key> <string>_params</string> </key> - <value> <string>**kw</string> </value> + <value> <string>search_text=\'\', **kw</string> </value> </item> <item> <key> <string>id</string> </key> -- 2.30.9