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 sys | ||||||
| import base64 | import base64 | ||||||
| 
 | 
 | ||||||
| from datetime import datetime, timedelta |  | ||||||
| from timeit import default_timer | from timeit import default_timer | ||||||
| from html import escape | from html import escape | ||||||
| from io import StringIO | from io import StringIO | ||||||
|  | @ -45,7 +44,6 @@ from flask.json import jsonify | ||||||
| from flask_babel import ( | from flask_babel import ( | ||||||
|     Babel, |     Babel, | ||||||
|     gettext, |     gettext, | ||||||
|     format_date, |  | ||||||
|     format_decimal, |     format_decimal, | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
|  | @ -79,6 +77,7 @@ from searx.webutils import ( | ||||||
|     is_hmac_of, |     is_hmac_of, | ||||||
|     is_flask_run_cmdline, |     is_flask_run_cmdline, | ||||||
|     group_engines_in_tab, |     group_engines_in_tab, | ||||||
|  |     searxng_format_date, | ||||||
| ) | ) | ||||||
| from searx.webadapter import ( | from searx.webadapter import ( | ||||||
|     get_search_query_from_webapp, |     get_search_query_from_webapp, | ||||||
|  | @ -718,25 +717,13 @@ def search(): | ||||||
|         if 'url' in result: |         if 'url' in result: | ||||||
|             result['pretty_url'] = prettify_url(result['url']) |             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 |         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) |             try:  # test if publishedDate >= 1900 (datetime module bug) | ||||||
|                 result['pubdate'] = result['publishedDate'].strftime('%Y-%m-%d %H:%M:%S%z') |                 result['pubdate'] = result['publishedDate'].strftime('%Y-%m-%d %H:%M:%S%z') | ||||||
|             except ValueError: |             except ValueError: | ||||||
|                 result['publishedDate'] = None |                 result['publishedDate'] = None | ||||||
|             else: |             else: | ||||||
|                 if result['publishedDate'].replace(tzinfo=None) >= datetime.now() - timedelta(days=1): |                 result['publishedDate'] = searxng_format_date(result['publishedDate']) | ||||||
|                     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']) |  | ||||||
| 
 | 
 | ||||||
|         # set result['open_group'] = True when the template changes from the previous result |         # 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 |         # set result['close_group'] = True when the template changes on the next result | ||||||
|  |  | ||||||
|  | @ -7,11 +7,14 @@ import hmac | ||||||
| import re | import re | ||||||
| import inspect | import inspect | ||||||
| import itertools | import itertools | ||||||
|  | from datetime import datetime, timedelta | ||||||
| from typing import Iterable, List, Tuple, Dict | from typing import Iterable, List, Tuple, Dict | ||||||
| 
 | 
 | ||||||
| from io import StringIO | from io import StringIO | ||||||
| from codecs import getincrementalencoder | from codecs import getincrementalencoder | ||||||
| 
 | 
 | ||||||
|  | from flask_babel import gettext, format_date | ||||||
|  | 
 | ||||||
| from searx import logger, settings | from searx import logger, settings | ||||||
| from searx.engines import Engine, OTHER_CATEGORY | from searx.engines import Engine, OTHER_CATEGORY | ||||||
| 
 | 
 | ||||||
|  | @ -138,6 +141,22 @@ def highlight_content(content, query): | ||||||
|     return content |     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(): | def is_flask_run_cmdline(): | ||||||
|     """Check if the application was started using "flask run" command line |     """Check if the application was started using "flask run" command line | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		
		Reference in a new issue
	
	 Alexandre FLAMENT
						Alexandre FLAMENT