Display release date of media element in form "X months ago"

master
Felix Stupp 2 years ago
parent a3a304e097
commit cdb6cb754d
Signed by: zocker
GPG Key ID: 93E1BD26F6B02FB7

@ -290,6 +290,37 @@ def _filter_timedelta(seconds: Optional[int]) -> Optional[str]:
return ret
YEAR_MEAN_LENGTH_DAYS = 365.2425
TIME_SINCE_FORMAT = {
timedelta(hours=1): "hour",
timedelta(days=1): "day",
timedelta(days=7): "week",
timedelta(days=YEAR_MEAN_LENGTH_DAYS / 12): "month",
timedelta(days=YEAR_MEAN_LENGTH_DAYS): "year",
}
TIME_SINCE_ORDER = sorted(TIME_SINCE_FORMAT.keys())
@flask_app.template_filter()
def time_since(date: datetime) -> str:
if date is None:
return None
now = datetime.now()
missing_time = common.date_to_datetime(date.date()) == date
if missing_time:
now = common.date_to_datetime(now.date())
passed = now - date
last_thres = None
for threshold in TIME_SINCE_ORDER:
if passed < threshold:
break
last_thres = threshold
if last_thres is not None:
passed_thres = passed // last_thres
return f"{passed_thres} {TIME_SINCE_FORMAT[last_thres]}{'s' if passed_thres > 1 else ''}"
return "today" if missing_time else "now"
####
# Routes
####

@ -33,7 +33,9 @@
</li>
<li>Can be considered: {{ element.can_considered | tenary("Yes", "no") }}</li>
<li>
Date:
released
{{ element.release_date | time_since }}
ago,
{{ element.release_date }}
</li>
<li>

Loading…
Cancel
Save