Fix comparison from wrong formats with datetime objects (#2697)

Co-authored-by: Adam Hopkins <adam@amhopkins.com>
This commit is contained in:
stricaud
2023-03-20 11:12:09 +01:00
committed by GitHub
parent 8f265b8169
commit 009954003c
2 changed files with 75 additions and 1 deletions

View File

@@ -148,7 +148,26 @@ async def validate_file(
last_modified = datetime.fromtimestamp(
float(last_modified), tz=timezone.utc
).replace(microsecond=0)
if last_modified <= if_modified_since:
if (
last_modified.utcoffset() is None
and if_modified_since.utcoffset() is not None
):
logger.warning(
"Cannot compare tz-aware and tz-naive datetimes. To avoid "
"this conflict Sanic is converting last_modified to UTC."
)
last_modified.replace(tzinfo=timezone.utc)
elif (
last_modified.utcoffset() is not None
and if_modified_since.utcoffset() is None
):
logger.warning(
"Cannot compare tz-aware and tz-naive datetimes. To avoid "
"this conflict Sanic is converting if_modified_since to UTC."
)
if_modified_since.replace(tzinfo=timezone.utc)
if last_modified.timestamp() <= if_modified_since.timestamp():
return HTTPResponse(status=304)