mirror of
				https://github.com/searxng/searxng
				synced 2024-01-01 19:24:07 +01:00 
			
		
		
		
	Add searx.webutils.searxng_format_date
* Move the datetime to str code from searx.webapp.search to searx.webutils.searxng_format_date * When the month, day, hour, day and second are zero, the function returns only the year.
This commit is contained in:
		
							parent
							
								
									bef3984d03
								
							
						
					
					
						commit
						a96f503d7b
					
				
					 2 changed files with 21 additions and 15 deletions
				
			
		|  | @ -12,7 +12,6 @@ import os | |||
| import sys | ||||
| import base64 | ||||
| 
 | ||||
| from datetime import datetime, timedelta | ||||
| from timeit import default_timer | ||||
| from html import escape | ||||
| from io import StringIO | ||||
|  | @ -45,7 +44,6 @@ from flask.json import jsonify | |||
| from flask_babel import ( | ||||
|     Babel, | ||||
|     gettext, | ||||
|     format_date, | ||||
|     format_decimal, | ||||
| ) | ||||
| 
 | ||||
|  | @ -79,6 +77,7 @@ from searx.webutils import ( | |||
|     is_hmac_of, | ||||
|     is_flask_run_cmdline, | ||||
|     group_engines_in_tab, | ||||
|     searxng_format_date, | ||||
| ) | ||||
| from searx.webadapter import ( | ||||
|     get_search_query_from_webapp, | ||||
|  | @ -718,25 +717,13 @@ def search(): | |||
|         if 'url' in result: | ||||
|             result['pretty_url'] = prettify_url(result['url']) | ||||
| 
 | ||||
|         # TODO, check if timezone is calculated right  # pylint: disable=fixme | ||||
|         if result.get('publishedDate'):  # 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: | ||||
|                 result['publishedDate'] = None | ||||
|             else: | ||||
|                 if result['publishedDate'].replace(tzinfo=None) >= datetime.now() - timedelta(days=1): | ||||
|                     timedifference = datetime.now() - result['publishedDate'].replace(tzinfo=None) | ||||
|                     minutes = int((timedifference.seconds / 60) % 60) | ||||
|                     hours = int(timedifference.seconds / 60 / 60) | ||||
|                     if hours == 0: | ||||
|                         result['publishedDate'] = gettext('{minutes} minute(s) ago').format(minutes=minutes) | ||||
|                     else: | ||||
|                         result['publishedDate'] = gettext('{hours} hour(s), {minutes} minute(s) ago').format( | ||||
|                             hours=hours, minutes=minutes | ||||
|                         ) | ||||
|                 else: | ||||
|                     result['publishedDate'] = format_date(result['publishedDate']) | ||||
|                 result['publishedDate'] = searxng_format_date(result['publishedDate']) | ||||
| 
 | ||||
|         # 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 | ||||
|  |  | |||
|  | @ -7,11 +7,14 @@ import hmac | |||
| import re | ||||
| import inspect | ||||
| import itertools | ||||
| from datetime import datetime, timedelta | ||||
| from typing import Iterable, List, Tuple, Dict | ||||
| 
 | ||||
| from io import StringIO | ||||
| from codecs import getincrementalencoder | ||||
| 
 | ||||
| from flask_babel import gettext, format_date | ||||
| 
 | ||||
| from searx import logger, settings | ||||
| from searx.engines import Engine, OTHER_CATEGORY | ||||
| 
 | ||||
|  | @ -138,6 +141,22 @@ def highlight_content(content, query): | |||
|     return content | ||||
| 
 | ||||
| 
 | ||||
| def searxng_format_date(dt: datetime):  # pylint: disable=invalid-name | ||||
|     # TODO, check if timezone is calculated right  # pylint: disable=fixme | ||||
|     d = dt.date() | ||||
|     t = dt.time() | ||||
|     if d.month == 1 and d.day == 1 and t.hour == 0 and t.minute == 0 and t.second == 0: | ||||
|         return str(d.year) | ||||
|     if dt.replace(tzinfo=None) >= datetime.now() - timedelta(days=1): | ||||
|         timedifference = datetime.now() - dt.replace(tzinfo=None) | ||||
|         minutes = int((timedifference.seconds / 60) % 60) | ||||
|         hours = int(timedifference.seconds / 60 / 60) | ||||
|         if hours == 0: | ||||
|             return gettext('{minutes} minute(s) ago').format(minutes=minutes) | ||||
|         return gettext('{hours} hour(s), {minutes} minute(s) ago').format(hours=hours, minutes=minutes) | ||||
|     return format_date(dt) | ||||
| 
 | ||||
| 
 | ||||
| def is_flask_run_cmdline(): | ||||
|     """Check if the application was started using "flask run" command line | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
	Add table
		
		Reference in a new issue
	
	 Alexandre FLAMENT
						Alexandre FLAMENT