dataviz: fix time filters (#55621)

This commit is contained in:
Valentin Deniaud 2021-07-19 12:10:45 +02:00
parent 7d584ee086
commit 56efce9b00
2 changed files with 37 additions and 5 deletions

View File

@ -365,6 +365,7 @@ class ChartNgCell(CellBase):
now = timezone.now().date()
if self.time_range == 'current-year':
params['start'] = date(year=now.year, month=1, day=1)
params['end'] = date(year=now.year + 1, month=1, day=1)
elif self.time_range == 'previous-year':
params['start'] = date(year=now.year - 1, month=1, day=1)
params['end'] = date(year=now.year, month=1, day=1)
@ -372,13 +373,14 @@ class ChartNgCell(CellBase):
params['start'] = date(year=now.year + 1, month=1, day=1)
params['end'] = date(year=now.year + 2, month=1, day=1)
elif self.time_range == 'current-month':
params['start'] = date(year=now.year, month=now.month, day=1)
params['start'] = now.replace(day=1)
params['end'] = now + relativedelta(day=1, months=1)
elif self.time_range == 'previous-month':
params['start'] = date(year=now.year, month=now.month - 1, day=1)
params['end'] = date(year=now.year, month=now.month, day=1)
params['start'] = now + relativedelta(day=1, months=-1)
params['end'] = now.replace(day=1)
elif self.time_range == 'next-month':
params['start'] = date(year=now.year, month=now.month + 1, day=1)
params['end'] = date(year=now.year, month=now.month + 2, day=1)
params['start'] = now + relativedelta(day=1, months=1)
params['end'] = now + relativedelta(day=1, months=2)
elif self.time_range == 'current-week':
params['start'] = now + relativedelta(weekday=MO(-1))
params['end'] = now + relativedelta(weekday=MO(+1), days=+1)

View File

@ -1439,6 +1439,36 @@ def test_chartng_cell_new_api_filter_params(new_api_statistics, nocache, freezer
assert 'start=2020-10-01' in request.url and 'end=2020-11-03' in request.url
@with_httmock(new_api_mock)
def test_chartng_cell_new_api_filter_params_month(new_api_statistics, nocache, freezer):
page = Page.objects.create(title='One', slug='index')
cell = ChartNgCell(page=page, order=1, placeholder='content')
cell.statistic = Statistic.objects.get(slug='one-serie')
cell.save()
cell.filter_params = {'time_interval': 'month', 'ou': 'default'}
cell.time_range = 'current-month'
cell.save()
freezer.move_to('2021-01-02')
chart = cell.get_chart()
request = new_api_mock.call['requests'][0]
assert 'start=2021-01-01' in request.url and 'end=2021-02-01' in request.url
cell.time_range = 'previous-month'
cell.save()
chart = cell.get_chart()
request = new_api_mock.call['requests'][1]
assert 'start=2020-12-01' in request.url and 'end=2021-01-01' in request.url
freezer.move_to('2021-11-02')
cell.time_range = 'next-month'
cell.save()
chart = cell.get_chart()
request = new_api_mock.call['requests'][2]
assert 'start=2021-12-01' in request.url and 'end=2022-01-01' in request.url
def test_dataviz_check_validity(nocache):
page = Page.objects.create(title='One', slug='index')
stat = Statistic.objects.create(url='https://stat.com/stats/1/')