From cc6fca3f5147d46f7c5bf6c9ee2073fd9e571142 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20P=C3=A9ters?= Date: Thu, 1 Nov 2018 14:19:38 +0100 Subject: [PATCH] misc: extend |parse_datetime to accept time.struct_time objects (#27715) --- combo/public/templatetags/combo.py | 3 +++ tests/test_public_templatetags.py | 2 ++ 2 files changed, 5 insertions(+) diff --git a/combo/public/templatetags/combo.py b/combo/public/templatetags/combo.py index 57191571..b1b0f36c 100644 --- a/combo/public/templatetags/combo.py +++ b/combo/public/templatetags/combo.py @@ -17,6 +17,7 @@ from __future__ import absolute_import import datetime +import time from django import template from django.conf import settings @@ -176,6 +177,8 @@ def parse_date(date_string): @register.filter def parse_datetime(date_string): + if isinstance(date_string, time.struct_time): + return datetime.datetime.fromtimestamp(time.mktime(date_string)) try: return dateparse.parse_datetime(date_string) except (ValueError, TypeError): diff --git a/tests/test_public_templatetags.py b/tests/test_public_templatetags.py index d4c692e2..bb25a180 100644 --- a/tests/test_public_templatetags.py +++ b/tests/test_public_templatetags.py @@ -1,5 +1,6 @@ import os import shutil +import time import pytest @@ -35,6 +36,7 @@ def test_parse_datetime(): assert t.render(Context({'someday': '2015-04-15T13:11:12.12345'})) == expected assert t.render(Context({'someday': '2015-04-15T13:11:12.12345Z'})) == expected assert t.render(Context({'someday': '2015-04-15T13:11:12.12345+00:00'})) == expected + assert t.render(Context({'someday': time.localtime(time.mktime((2015, 4, 15, 13, 11, 12, 0, 0, 0)))})) == expected assert t.render(Context({'someday': '2015-04-15T13:11'})) == '2015 04 15 13 11 00 UTC' assert t.render(Context({'someday': '2015-04-15T13'})) == '' assert t.render(Context({'someday': 'foobar'})) == '' -- 2.19.1