mirror of
https://github.com/parchlinuxB/Gitee.git
synced 2025-02-22 01:45:44 -05:00
[mod] rudimentary implementation of a MainResult type
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
This commit is contained in:
parent
df3344e5d5
commit
a235c54f8c
4 changed files with 41 additions and 33 deletions
|
@ -114,6 +114,25 @@ class Result(msgspec.Struct, kw_only=True):
|
|||
return {f: getattr(self, f) for f in self.__struct_fields__}
|
||||
|
||||
|
||||
class MainResult(Result): # pylint: disable=missing-class-docstring
|
||||
|
||||
# open_group and close_group should not manged in the Result class (we should rop it from here!)
|
||||
open_group: bool = False
|
||||
close_group: bool = False
|
||||
|
||||
title: str = ""
|
||||
"""Link title of the result item."""
|
||||
|
||||
content: str = ""
|
||||
"""Extract or description of the result item"""
|
||||
|
||||
img_src: str = ""
|
||||
"""URL of a image that is displayed in the result item."""
|
||||
|
||||
thumbnail: str = ""
|
||||
"""URL of a thumbnail that is displayed in the result item."""
|
||||
|
||||
|
||||
class LegacyResult(dict):
|
||||
"""A wrapper around a legacy result item. The SearXNG core uses this class
|
||||
for untyped dictionaries / to be downward compatible.
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<table>
|
||||
{% for key, value in result.items() %}
|
||||
{% if key in ['engine', 'engines', 'template', 'score', 'category', 'positions', 'pretty_url', 'parsed_url'] %}
|
||||
{% if key in ['engine', 'engines', 'template', 'score', 'category', 'positions', 'parsed_url'] %}
|
||||
{% continue %}
|
||||
{% endif %}
|
||||
<tr>
|
||||
|
|
|
@ -694,9 +694,7 @@ def search():
|
|||
if 'title' in result and result['title']:
|
||||
result['title'] = highlight_content(escape(result['title'] or ''), search_query.query)
|
||||
|
||||
if 'url' in result:
|
||||
result['pretty_url'] = webutils.prettify_url(result['url'])
|
||||
if result.get('publishedDate'): # do not try to get a date from an empty string or a None type
|
||||
if getattr(result, 'publishedDate', None): # do not try to get a date from an empty string or a None type
|
||||
try: # test if publishedDate >= 1900 (datetime module bug)
|
||||
result['pubdate'] = result['publishedDate'].strftime('%Y-%m-%d %H:%M:%S%z')
|
||||
except ValueError:
|
||||
|
@ -706,15 +704,15 @@ def search():
|
|||
|
||||
# set result['open_group'] = True when the template changes from the previous result
|
||||
# set result['close_group'] = True when the template changes on the next result
|
||||
if current_template != result.get('template'):
|
||||
result['open_group'] = True
|
||||
if current_template != result.template:
|
||||
result.open_group = True
|
||||
if previous_result:
|
||||
previous_result['close_group'] = True # pylint: disable=unsupported-assignment-operation
|
||||
current_template = result.get('template')
|
||||
previous_result.close_group = True # pylint: disable=unsupported-assignment-operation
|
||||
current_template = result.template
|
||||
previous_result = result
|
||||
|
||||
if previous_result:
|
||||
previous_result['close_group'] = True
|
||||
previous_result.close_group = True
|
||||
|
||||
# 4.a RSS
|
||||
|
||||
|
|
|
@ -2,13 +2,13 @@
|
|||
# pylint: disable=missing-module-docstring,disable=missing-class-docstring,invalid-name
|
||||
|
||||
import json
|
||||
from urllib.parse import ParseResult
|
||||
import babel
|
||||
from mock import Mock
|
||||
|
||||
import searx.webapp
|
||||
import searx.search
|
||||
import searx.search.processors
|
||||
from searx.result_types._base import MainResult
|
||||
|
||||
from searx.results import Timing
|
||||
from searx.preferences import Preferences
|
||||
|
@ -31,30 +31,21 @@ class ViewsTestCase(SearxTestCase): # pylint: disable=too-many-public-methods
|
|||
|
||||
# set some defaults
|
||||
test_results = [
|
||||
{
|
||||
'content': 'first test content',
|
||||
'title': 'First Test',
|
||||
'url': 'http://first.test.xyz',
|
||||
'engines': ['youtube', 'startpage'],
|
||||
'engine': 'startpage',
|
||||
'parsed_url': ParseResult(
|
||||
scheme='http', netloc='first.test.xyz', path='/', params='', query='', fragment=''
|
||||
),
|
||||
'template': 'default.html',
|
||||
},
|
||||
{
|
||||
'content': 'second test content',
|
||||
'title': 'Second Test',
|
||||
'url': 'http://second.test.xyz',
|
||||
'engines': ['youtube', 'startpage'],
|
||||
'engine': 'youtube',
|
||||
'parsed_url': ParseResult(
|
||||
scheme='http', netloc='second.test.xyz', path='/', params='', query='', fragment=''
|
||||
),
|
||||
'template': 'default.html',
|
||||
},
|
||||
MainResult(
|
||||
title="First Test",
|
||||
url="http://first.test.xyz",
|
||||
content="first test content",
|
||||
engine="startpage",
|
||||
),
|
||||
MainResult(
|
||||
title="Second Test",
|
||||
url="http://second.test.xyz",
|
||||
content="second test content",
|
||||
engine="youtube",
|
||||
),
|
||||
]
|
||||
|
||||
for r in test_results:
|
||||
r.normalize_result_fields()
|
||||
timings = [
|
||||
Timing(engine='startpage', total=0.8, load=0.7),
|
||||
Timing(engine='youtube', total=0.9, load=0.6),
|
||||
|
|
Loading…
Add table
Reference in a new issue