api: fix date_start & meetings/datetimes (#52995)
This commit is contained in:
parent
a8152457d4
commit
0af9b0b63d
|
@ -996,6 +996,10 @@ class SharedTimePeriod(object):
|
|||
event_datetime = make_aware(make_naive(real_min_datetime)).replace(
|
||||
hour=self.start_time.hour, minute=self.start_time.minute, second=0, microsecond=0
|
||||
)
|
||||
# don't start before min_datetime
|
||||
event_datetime = max(event_datetime, min_datetime)
|
||||
|
||||
# get slots
|
||||
while event_datetime < max_datetime:
|
||||
end_time = event_datetime + meeting_duration
|
||||
next_time = event_datetime + duration
|
||||
|
@ -1012,6 +1016,7 @@ class SharedTimePeriod(object):
|
|||
event_datetime = make_aware(event_datetime)
|
||||
next_time = event_datetime + duration
|
||||
|
||||
# don't end after max_datetime
|
||||
if event_datetime > max_datetime:
|
||||
break
|
||||
|
||||
|
|
|
@ -5764,11 +5764,25 @@ def test_meetings_and_virtual_datetimes_date_filter(app):
|
|||
resp = app.get(virtual_api_url, params=params)
|
||||
assert len(resp.json['data']) == 20
|
||||
|
||||
params = {'date_start': (localtime(now()) + datetime.timedelta(days=2)).isoformat()}
|
||||
params = {
|
||||
'date_start': (localtime(now()) + datetime.timedelta(days=2))
|
||||
.replace(hour=12, minute=0, second=0, microsecond=0)
|
||||
.isoformat()
|
||||
}
|
||||
resp = app.get(foo_api_url, params=params)
|
||||
assert len(resp.json['data']) == 20
|
||||
assert len(resp.json['data']) == 16
|
||||
resp = app.get(virtual_api_url, params=params)
|
||||
assert len(resp.json['data']) == 20
|
||||
assert len(resp.json['data']) == 16
|
||||
|
||||
params = {
|
||||
'date_start': (localtime(now()) + datetime.timedelta(days=2))
|
||||
.replace(hour=11, minute=0, second=0, microsecond=0)
|
||||
.isoformat()
|
||||
}
|
||||
resp = app.get(foo_api_url, params=params)
|
||||
assert len(resp.json['data']) == 18
|
||||
resp = app.get(virtual_api_url, params=params)
|
||||
assert len(resp.json['data']) == 18
|
||||
|
||||
# minimal_booking_delay (which exclude weekday1 and wekkday2 ) takes precedence
|
||||
# 4 slots each day * 4 days
|
||||
|
@ -5795,11 +5809,15 @@ def test_meetings_and_virtual_datetimes_date_filter(app):
|
|||
resp = app.get(virtual_api_url, params=params)
|
||||
assert len(resp.json['data']) == 20
|
||||
|
||||
params = {'date_end': (localtime(now()) + datetime.timedelta(days=6)).replace(hour=12).isoformat()}
|
||||
params = {
|
||||
'date_end': (localtime(now()) + datetime.timedelta(days=6))
|
||||
.replace(hour=11, minute=0, second=0, microsecond=0)
|
||||
.isoformat()
|
||||
}
|
||||
resp = app.get(foo_api_url, params=params)
|
||||
assert len(resp.json['data']) == 24
|
||||
assert len(resp.json['data']) == 22
|
||||
resp = app.get(virtual_api_url, params=params)
|
||||
assert len(resp.json['data']) == 24
|
||||
assert len(resp.json['data']) == 22
|
||||
|
||||
# maximal_booking_delay (which exclude weekday5 and weekday6 ) takes precedence
|
||||
# 4 slots each day * 4 days
|
||||
|
|
Loading…
Reference in New Issue