diff libervia/server/pages.py @ 1376:1b94a5ab155f

pages (blog/view): Full-Text Search is used when `search` query argument is present the new `LiberviaPage.handleSearch` method implements FTS in PubSub based features.
author Goffi <goffi@goffi.org>
date Fri, 11 Dec 2020 17:35:06 +0100
parents e943b0c8eec5
children e3e303a30a74
line wrap: on
line diff
--- a/libervia/server/pages.py	Fri Dec 11 17:35:06 2020 +0100
+++ b/libervia/server/pages.py	Fri Dec 11 17:35:06 2020 +0100
@@ -1596,6 +1596,25 @@
             request.data = {}
             return request.data
 
+    def handleSearch(self, request, extra):
+        """Manage Full-Text Search
+
+        Check if "search" query argument is present, and add MAM filter for it if
+        necessary.
+        If used, the "search" variable will also be available in template data, thus
+        frontend can display some information about it.
+        """
+        search = self.getPostedData(request, 'search', raise_on_missing=False)
+        if search is not None:
+            search = search.strip()
+            if search:
+                try:
+                    extra[f'mam_filter_{self.host.ns_map["fulltextmam"]}'] = search
+                except KeyError:
+                    log.warning(_("Full-text search is not available"))
+                else:
+                    request.template_data['search'] = search
+
     def _checkAccess(self, request):
         """Check access according to self.access