From 70ede189427bea7554add8492e302ee54f11599c Mon Sep 17 00:00:00 2001 From: Sagar Vora Date: Thu, 2 Mar 2023 09:51:02 +0530 Subject: [PATCH] fix: improved implementation of `between` filter (#20190) --- frappe/database/database.py | 8 +------- frappe/model/db_query.py | 4 +++- 2 files changed, 4 insertions(+), 8 deletions(-) diff --git a/frappe/database/database.py b/frappe/database/database.py index bb780d8a37..7e82340d23 100644 --- a/frappe/database/database.py +++ b/frappe/database/database.py @@ -1070,13 +1070,7 @@ class Database: if not datetime: return FallBackDateTimeStr - if isinstance(datetime, str): - if ":" not in datetime: - datetime = datetime + " 00:00:00.000000" - else: - datetime = datetime.strftime("%Y-%m-%d %H:%M:%S.%f") - - return datetime + return get_datetime(datetime).strftime("%Y-%m-%d %H:%M:%S.%f") def get_creation_count(self, doctype, minutes): """Get count of records created in the last x minutes""" diff --git a/frappe/model/db_query.py b/frappe/model/db_query.py index 462b645509..d785825a77 100644 --- a/frappe/model/db_query.py +++ b/frappe/model/db_query.py @@ -762,6 +762,7 @@ class DatabaseQuery: value = "('')" else: + escape = True df = meta.get("fields", {"fieldname": f.fieldname}) df = df[0] if df else None @@ -783,6 +784,7 @@ class DatabaseQuery: or (df and (df.fieldtype == "Date" or df.fieldtype == "Datetime")) ): + escape = False value = get_between_date_filter(f.value, df) fallback = f"'{FallBackDateTimeStr}'" @@ -842,7 +844,7 @@ class DatabaseQuery: value = f"{tname}.{quote}{f.value.name}{quote}" # escape value - elif isinstance(value, str) and f.operator.lower() != "between": + elif escape and isinstance(value, str): value = f"{frappe.db.escape(value, percent=False)}" if (