forked from zaclys/searxng
		
	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