Merge pull request #17097 from mmdanny89/mmdanny89-dev

fix: infinite loop graphic bar
This commit is contained in:
Ankush Menat 2022-06-08 12:09:49 +05:30 committed by GitHub
commit b418aea169
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 41 additions and 17 deletions

View file

@ -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):

View file

@ -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]
)