This is an automated email from the ASF dual-hosted git repository.

kentontaylor pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/allura.git

commit 19f35cefe966762b6552b4e69366b3109051d4cd
Author: Dave Brondsema <[email protected]>
AuthorDate: Fri Sep 10 22:04:57 2021 +0000

    [#8396] upgrade pysolr
---
 Allura/allura/lib/search.py | 14 ++++++++++++++
 Allura/allura/lib/solr.py   |  3 +++
 requirements.in             |  2 +-
 requirements.txt            |  2 +-
 4 files changed, 19 insertions(+), 2 deletions(-)

diff --git a/Allura/allura/lib/search.py b/Allura/allura/lib/search.py
index 462ffc2..6d820cf 100644
--- a/Allura/allura/lib/search.py
+++ b/Allura/allura/lib/search.py
@@ -105,6 +105,20 @@ class SearchIndexable(object):
         # To do so, we convert markdown into html, and then strip all html 
tags.
         text = g.markdown.convert(text)
         doc['text'] = jinja2.Markup.escape(text).striptags()
+
+        # convert some date/time field types to str
+        # from 
https://github.com/django-haystack/pysolr/blob/1a8887cb2ce1c30ef9d6570704254b4520f8a959/pysolr.py#L692
+        for k, value in doc.items():
+            if hasattr(value, "strftime"):
+                if hasattr(value, "hour"):
+                    offset = value.utcoffset()
+                    if offset:
+                        value = value - offset
+                    value = value.replace(tzinfo=None).isoformat() + "Z"
+                else:
+                    value = "%sT00:00:00Z" % value.isoformat()
+                doc[k] = value
+
         return doc
 
     @classmethod
diff --git a/Allura/allura/lib/solr.py b/Allura/allura/lib/solr.py
index d97141e..de4c536 100644
--- a/Allura/allura/lib/solr.py
+++ b/Allura/allura/lib/solr.py
@@ -17,6 +17,8 @@
 
 from __future__ import unicode_literals
 from __future__ import absolute_import
+
+import json
 import logging
 
 from tg import config
@@ -145,6 +147,7 @@ class MockSOLR(object):
     def add(self, objects):
         for o in objects:
             o['text'] = ''.join(o['text'])
+            json.dumps(o)  # ensure no errors (since pysolr 3.9+ uses json API 
to solr)
             self.db[o['id']] = o
 
     def commit(self):
diff --git a/requirements.in b/requirements.in
index d4bf5af..14b95cd 100644
--- a/requirements.in
+++ b/requirements.in
@@ -34,7 +34,7 @@ profanityfilter==2.0.6
 Pygments
 pymongo==3.10.1
 Pypeline[creole,markdown,textile,rst]
-pysolr==3.6.0
+pysolr
 python-dateutil
 python-magic
 python-oembed
diff --git a/requirements.txt b/requirements.txt
index a987f50..c9cb3d0 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -131,7 +131,7 @@ pyparsing==2.4.7
     #   packaging
 pypeline[creole,markdown,rst,textile]==0.5.3
     # via -r requirements.in
-pysolr==3.6.0
+pysolr==3.9.0
     # via -r requirements.in
 python-dateutil==2.8.0
     # via

Reply via email to