修复商家订单时间段筛选在USE_TZ=False下MySQL 500
This commit is contained in:
@@ -1,6 +1,7 @@
|
|||||||
"""商家订单列表通用筛选(商家老板接口 + 子客服列表共用)。"""
|
"""商家订单列表通用筛选(商家老板接口 + 子客服列表共用)。"""
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
|
|
||||||
|
from django.conf import settings
|
||||||
from django.db.models import Q
|
from django.db.models import Q
|
||||||
from django.utils import timezone
|
from django.utils import timezone
|
||||||
from django.utils.dateparse import parse_datetime
|
from django.utils.dateparse import parse_datetime
|
||||||
@@ -8,11 +9,16 @@ from django.utils.dateparse import parse_datetime
|
|||||||
from backend.utils import pick_leixing_id
|
from backend.utils import pick_leixing_id
|
||||||
|
|
||||||
|
|
||||||
def _aware_dt(dt):
|
def _db_dt(dt):
|
||||||
|
"""与项目 USE_TZ 设置一致:USE_TZ=False 时必须返回 naive datetime。"""
|
||||||
if dt is None:
|
if dt is None:
|
||||||
return None
|
return None
|
||||||
if timezone.is_naive(dt):
|
if settings.USE_TZ:
|
||||||
return timezone.make_aware(dt, timezone.get_current_timezone())
|
if timezone.is_naive(dt):
|
||||||
|
return timezone.make_aware(dt, timezone.get_current_timezone())
|
||||||
|
return dt
|
||||||
|
if timezone.is_aware(dt):
|
||||||
|
return timezone.make_naive(dt, timezone.get_current_timezone())
|
||||||
return dt
|
return dt
|
||||||
|
|
||||||
|
|
||||||
@@ -30,15 +36,15 @@ def parse_order_list_bound(value, is_end=False):
|
|||||||
return None
|
return None
|
||||||
if is_end:
|
if is_end:
|
||||||
base = base.replace(hour=23, minute=59, second=59)
|
base = base.replace(hour=23, minute=59, second=59)
|
||||||
return _aware_dt(base)
|
return _db_dt(base)
|
||||||
dt = parse_datetime(raw.replace(' ', 'T', 1) if ' ' in raw and 'T' not in raw else raw)
|
dt = parse_datetime(raw.replace(' ', 'T', 1) if ' ' in raw and 'T' not in raw else raw)
|
||||||
if dt is None:
|
if dt is None:
|
||||||
try:
|
try:
|
||||||
base = datetime.strptime(raw[:19], '%Y-%m-%d %H:%M:%S')
|
base = datetime.strptime(raw[:19], '%Y-%m-%d %H:%M:%S')
|
||||||
return _aware_dt(base)
|
return _db_dt(base)
|
||||||
except ValueError:
|
except ValueError:
|
||||||
return None
|
return None
|
||||||
return _aware_dt(dt)
|
return _db_dt(dt)
|
||||||
|
|
||||||
|
|
||||||
def apply_merchant_order_list_filters(qs, data):
|
def apply_merchant_order_list_filters(qs, data):
|
||||||
|
|||||||
Reference in New Issue
Block a user