NewsBlur-viq/utils/story_functions.py

45 lines
No EOL
1.9 KiB
Python

from django.utils.dateformat import DateFormat
import datetime
from django.utils.http import urlquote
def format_story_link_date__short(date):
parsed_date, date_tuple, today_tuple, yesterday_tuple = _extract_date_tuples(date)
if date_tuple == today_tuple:
return parsed_date.format('g:ia').replace('.','')
elif date_tuple == yesterday_tuple:
return 'Yesterday, ' + parsed_date.format('g:ia').replace('.','')
else:
return parsed_date.format('d M Y, g:ia').replace('.','')
def format_story_link_date__long(date):
parsed_date, date_tuple, today_tuple, yesterday_tuple = _extract_date_tuples(date)
if date_tuple == today_tuple:
return 'Today, ' + parsed_date.format('F jS g:ia').replace('.','')
if date_tuple == yesterday_tuple:
return 'Yesterday, ' + parsed_date.format('F jS g:ia').replace('.','')
elif date_tuple[0] == today_tuple[0]:
return parsed_date.format('l, F jS g:ia').replace('.','')
else:
return parsed_date.format('l, F jS, Y g:ia').replace('.','')
def _extract_date_tuples(date):
parsed_date = DateFormat(date)
date_tuple = datetime.datetime.timetuple(date)[:3]
today_tuple = datetime.datetime.timetuple(datetime.datetime.utcnow())[:3]
today = datetime.datetime.today()
yesterday_tuple = datetime.datetime.timetuple(today - datetime.timedelta(1))[:3]
return parsed_date, date_tuple, today_tuple, yesterday_tuple
def pre_process_story(entry):
publish_date = entry.get('published_parsed', entry.get('updated_parsed'))
entry['published'] = datetime.datetime(*publish_date[:6]) if publish_date else datetime.datetime.utcnow()
entry_link = entry.get('link', '')
protocol_index = entry_link.find("://")
if protocol_index != -1:
entry['link'] = (entry_link[:protocol_index+3]
+ urlquote(entry_link[protocol_index+3:]))
else:
entry['link'] = urlquote(entry_link)
return entry