Sfoglia il codice sorgente

Merge pull request #15847 from gavindsouza/timeutils-fixes

version-14
Suraj Shetty 3 anni fa
committed by GitHub
parent
commit
ed048b97ea
Non sono state trovate chiavi note per questa firma nel database ID Chiave GPG: 4AEE18F83AFDEB23
2 ha cambiato i file con 40 aggiunte e 7 eliminazioni
  1. +27
    -1
      frappe/tests/test_utils.py
  2. +13
    -6
      frappe/utils/data.py

+ 27
- 1
frappe/tests/test_utils.py Vedi File

@@ -17,7 +17,7 @@ import frappe
from frappe.utils import ceil, evaluate_filters, floor, format_timedelta
from frappe.utils import get_url, money_in_words, parse_timedelta, scrub_urls
from frappe.utils import validate_email_address, validate_url
from frappe.utils.data import cast, validate_python_code
from frappe.utils.data import cast, get_time, get_timedelta, nowtime, now_datetime, validate_python_code
from frappe.utils.diff import _get_value_from_version, get_version_diff, version_query
from frappe.utils.image import optimize_image, strip_exif_data
from frappe.utils.response import json_handler
@@ -334,6 +334,32 @@ class TestDateUtils(unittest.TestCase):
self.assertEqual(frappe.utils.get_last_day_of_week("2020-12-28"),
frappe.utils.getdate("2021-01-02"))

def test_get_time(self):
datetime_input = now_datetime()
timedelta_input = get_timedelta()
time_input = nowtime()

self.assertIsInstance(get_time(datetime_input), time)
self.assertIsInstance(get_time(timedelta_input), time)
self.assertIsInstance(get_time(time_input), time)
self.assertIsInstance(get_time("100:2:12"), time)
self.assertIsInstance(get_time(str(datetime_input)), time)
self.assertIsInstance(get_time(str(timedelta_input)), time)
self.assertIsInstance(get_time(str(time_input)), time)

def test_get_timedelta(self):
datetime_input = now_datetime()
timedelta_input = get_timedelta()
time_input = nowtime()

self.assertIsInstance(get_timedelta(), timedelta)
self.assertIsInstance(get_timedelta("100:2:12"), timedelta)
self.assertIsInstance(get_timedelta("17:21:00"), timedelta)
self.assertIsInstance(get_timedelta("2012-01-19 17:21:00"), timedelta)
self.assertIsInstance(get_timedelta(str(datetime_input)), timedelta)
self.assertIsInstance(get_timedelta(str(timedelta_input)), timedelta)
self.assertIsInstance(get_timedelta(str(time_input)), timedelta)

class TestResponse(unittest.TestCase):
def test_json_handler(self):
class TEST(Enum):


+ 13
- 6
frappe/utils/data.py Vedi File

@@ -112,9 +112,9 @@ def get_timedelta(time: Optional[str] = None) -> Optional[datetime.timedelta]:
try:
t = parser.parse(time)
except ParserError as e:
if "day" in e.args[1]:
from frappe.utils import parse_timedelta
if "day" in e.args[1] or "hour must be in" in e.args[0]:
return parse_timedelta(time)
raise e
return datetime.timedelta(
hours=t.hour, minutes=t.minute, seconds=t.second, microseconds=t.microsecond
)
@@ -329,17 +329,24 @@ def get_year_ending(date):
# last day of this month
return add_to_date(date, days=-1)

def get_time(time_str):
def get_time(time_str: str) -> datetime.time:
from dateutil import parser
from dateutil.parser import ParserError

if isinstance(time_str, datetime.datetime):
return time_str.time()
elif isinstance(time_str, datetime.time):
return time_str
else:
if isinstance(time_str, datetime.timedelta):
return format_timedelta(time_str)
elif isinstance(time_str, datetime.timedelta):
return (datetime.datetime.min + time_str).time()
try:
return parser.parse(time_str).time()
except ParserError as e:
if "day" in e.args[1] or "hour must be in" in e.args[0]:
return (
datetime.datetime.min + parse_timedelta(time_str)
).time()
raise e

def get_datetime_str(datetime_obj):
if isinstance(datetime_obj, str):


Caricamento…
Annulla
Salva