Преглед на файлове

[Fix] Date between filter not working properly on report and listview (#4810)

version-14
rohitwaghchaure преди 7 години
committed by Faris Ansari
родител
ревизия
97e18c809e
променени са 1 файла, в които са добавени 11 реда и са изтрити 4 реда
  1. +11
    -4
      frappe/model/db_query.py

+ 11
- 4
frappe/model/db_query.py Целия файл

@@ -308,7 +308,7 @@ class DatabaseQuery(object):
if f.operator.lower() == 'between' and \
(f.fieldname in ('creation', 'modified') or (df and (df.fieldtype=="Date" or df.fieldtype=="Datetime"))):

value = get_between_date_filter(f.value)
value = get_between_date_filter(f.value, df)
fallback = "'0000-00-00 00:00:00'"

elif df and df.fieldtype=="Date":
@@ -584,20 +584,27 @@ def is_parent_only_filter(doctype, filters):

return only_parent_doctype

def get_between_date_filter(value):
def get_between_date_filter(value, df=None):
'''
return the formattted date as per the given example
[u'2017-11-01', u'2017-11-03'] => '2017-11-01 00:00:00.000000' AND '2017-11-04 00:00:00.000000'
'''
from_date = None
to_date = None
date_format = "%Y-%m-%d %H:%M:%S.%f"

if df:
date_format = "%Y-%m-%d %H:%M:%S.%f" if df.fieldtype == 'Datetime' else "%Y-%m-%d"

if value and isinstance(value, (list, tuple)):
if len(value) >= 1: from_date = value[0]
if len(value) >= 2: to_date = value[1]

if not df or (df and df.fieldtype == 'Datetime'):
to_date = add_to_date(to_date,days=1)

data = "'%s' AND '%s'" % (
get_datetime(from_date).strftime("%Y-%m-%d %H:%M:%S.%f"),
add_to_date(get_datetime(to_date),days=1).strftime("%Y-%m-%d %H:%M:%S.%f"))
get_datetime(from_date).strftime(date_format),
get_datetime(to_date).strftime(date_format))

return data

Зареждане…
Отказ
Запис