[TELE-1302]fix bug with str and LazyDateObject

This commit is contained in:
Nicolas Selva 2022-08-10 15:59:51 +02:00
parent 1fcd8758e0
commit 43fde04a8a
1 changed files with 16 additions and 2 deletions

View File

@ -8,10 +8,18 @@ from django import template
from django.utils.safestring import SafeText from django.utils.safestring import SafeText
from wcs.qommon import misc from wcs.qommon import misc
from wcs.qommon.templatetags.qommon import unlazy from wcs.qommon.templatetags.qommon import unlazy
from wcs.variables import LazyDateObject
register = template.Library() register = template.Library()
def unlazy_date(fdate):
if isinstance(fdate, LazyDateObject):
return str(unlazy(fdate))
else:
return fdate
@register.filter @register.filter
def clean_string(value): def clean_string(value):
return value.replace(" ", "").replace(".", "").replace("-", "") return value.replace(" ", "").replace(".", "").replace("-", "")
@ -57,6 +65,9 @@ def diff_dates(oldest_date, newest_date):
""" """
def transform_date(fdate): def transform_date(fdate):
if type(fdate) == LazyDateObject:
fdate = unlazy(fdate)
fdate = fdate[:10]
if "/" in fdate: if "/" in fdate:
return datetime.datetime.strptime(fdate, "%d/%m/%Y") return datetime.datetime.strptime(fdate, "%d/%m/%Y")
if "-" in fdate: if "-" in fdate:
@ -65,9 +76,12 @@ def diff_dates(oldest_date, newest_date):
if len(fdate.split("-")[0]) == 2: if len(fdate.split("-")[0]) == 2:
return datetime.datetime.strptime(fdate, "%d-%m-%Y") return datetime.datetime.strptime(fdate, "%d-%m-%Y")
if type(oldest_date) == SafeText: oldest_date = unlazy_date(oldest_date)
newest_date = unlazy_date(newest_date)
if type(oldest_date) in (SafeText, str):
oldest_date = transform_date(oldest_date) oldest_date = transform_date(oldest_date)
if type(newest_date) == SafeText: if type(newest_date) in (SafeText, str):
newest_date = transform_date(newest_date) newest_date = transform_date(newest_date)
diff = abs((oldest_date - newest_date).days) diff = abs((oldest_date - newest_date).days)
return str(diff) return str(diff)