Merge pull request #17097 from mmdanny89/mmdanny89-dev
fix: infinite loop graphic bar
This commit is contained in:
commit
b418aea169
2 changed files with 41 additions and 17 deletions
|
|
@ -30,13 +30,17 @@ from frappe.utils import (
|
|||
validate_url,
|
||||
)
|
||||
from frappe.utils.data import (
|
||||
add_to_date,
|
||||
cast,
|
||||
get_first_day_of_week,
|
||||
get_time,
|
||||
get_timedelta,
|
||||
getdate,
|
||||
now_datetime,
|
||||
nowtime,
|
||||
validate_python_code,
|
||||
)
|
||||
from frappe.utils.dateutils import get_dates_from_timegrain
|
||||
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
|
||||
|
|
@ -445,6 +449,31 @@ class TestDateUtils(unittest.TestCase):
|
|||
self.assertIsInstance(get_timedelta(str(timedelta_input)), timedelta)
|
||||
self.assertIsInstance(get_timedelta(str(time_input)), timedelta)
|
||||
|
||||
def test_date_from_timegrain(self):
|
||||
start_date = getdate("2021-01-01")
|
||||
|
||||
daily = get_dates_from_timegrain(start_date, add_to_date(start_date, days=6), "Daily")
|
||||
self.assertEqual(len(daily), 7)
|
||||
for idx, d in enumerate(daily):
|
||||
self.assertEqual(d, add_to_date(start_date, days=idx))
|
||||
|
||||
start = get_first_day_of_week(start_date)
|
||||
end = add_to_date(add_to_date(start, weeks=52), days=-1)
|
||||
weekly = get_dates_from_timegrain(start, end, "Weekly")
|
||||
self.assertEqual(len(weekly), 52)
|
||||
for idx, d in enumerate(weekly, start=1):
|
||||
self.assertEqual(d, add_to_date(start, days=7 * idx - 1))
|
||||
|
||||
quarterly = get_dates_from_timegrain(start_date, add_to_date(start_date, months=5), "Quarterly")
|
||||
self.assertEqual(len(quarterly), 2)
|
||||
for idx, d in enumerate(quarterly, start=1):
|
||||
self.assertEqual(d, add_to_date(start_date, months=idx * 3, days=-1))
|
||||
|
||||
yearly = get_dates_from_timegrain(start_date, add_to_date(start_date, years=2), "Yearly")
|
||||
self.assertEqual(len(yearly), 3)
|
||||
for idx, d in enumerate(yearly, start=1):
|
||||
self.assertEqual(d, add_to_date(start_date, years=idx, days=-1))
|
||||
|
||||
|
||||
class TestResponse(unittest.TestCase):
|
||||
def test_json_handler(self):
|
||||
|
|
|
|||
|
|
@ -106,11 +106,10 @@ def get_dates_from_timegrain(from_date, to_date, timegrain="Daily"):
|
|||
months = 1
|
||||
elif "Quarterly" == timegrain:
|
||||
months = 3
|
||||
elif "Yearly" == timegrain:
|
||||
months = 1
|
||||
|
||||
if "Weekly" == timegrain:
|
||||
dates = [get_last_day_of_week(from_date)]
|
||||
else:
|
||||
dates = [get_period_ending(from_date, timegrain)]
|
||||
dates = [get_period_ending(from_date, timegrain)]
|
||||
|
||||
while getdate(dates[-1]) < getdate(to_date):
|
||||
if "Weekly" == timegrain:
|
||||
|
|
@ -163,16 +162,12 @@ def get_period_beginning(date, timegrain, as_str=True):
|
|||
|
||||
|
||||
def get_period_ending(date, timegrain):
|
||||
date = getdate(date)
|
||||
if timegrain == "Daily":
|
||||
return date
|
||||
else:
|
||||
return getdate(
|
||||
{
|
||||
"Daily": date,
|
||||
"Weekly": get_last_day_of_week(date),
|
||||
"Monthly": get_last_day(date),
|
||||
"Quarterly": get_quarter_ending(date),
|
||||
"Yearly": get_year_ending(date),
|
||||
}[timegrain]
|
||||
)
|
||||
return getdate(
|
||||
{
|
||||
"Daily": date,
|
||||
"Weekly": get_last_day_of_week(date),
|
||||
"Monthly": get_last_day(date),
|
||||
"Quarterly": get_quarter_ending(date),
|
||||
"Yearly": get_year_ending(date),
|
||||
}[timegrain]
|
||||
)
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue