agendas: retain time period date attribute in exclusion computation (#71797)
This commit is contained in:
parent
ea8d6f70db
commit
688c12e201
|
@ -606,8 +606,9 @@ class Agenda(models.Model):
|
|||
if not closed_hours_by_days:
|
||||
yield SharedTimePeriod.from_weektime_interval(time_period_interval, desks=desks)
|
||||
else:
|
||||
date = time_period_interval.begin.date
|
||||
for weektime_interval in IntervalSet.simple(*time_period_interval) - closed_hours_by_days:
|
||||
yield SharedTimePeriod.from_weektime_interval(weektime_interval, desks=desks)
|
||||
yield SharedTimePeriod.from_weektime_interval(weektime_interval, desks=desks, date=date)
|
||||
|
||||
@functional.cached_property
|
||||
def max_booking_datetime(self):
|
||||
|
@ -1361,7 +1362,7 @@ class SharedTimePeriod:
|
|||
event_datetime = next_time
|
||||
|
||||
@classmethod
|
||||
def from_weektime_interval(cls, weektime_interval, desks=()):
|
||||
def from_weektime_interval(cls, weektime_interval, desks=(), date=None):
|
||||
begin, end = weektime_interval
|
||||
assert begin.weekday == end.weekday
|
||||
|
||||
|
@ -1370,7 +1371,7 @@ class SharedTimePeriod:
|
|||
weekday_indexes=begin.weekday_indexes or end.weekday_indexes,
|
||||
start_time=begin.time,
|
||||
end_time=end.time,
|
||||
date=begin.date or end.date,
|
||||
date=begin.date or end.date or date,
|
||||
desks=desks,
|
||||
)
|
||||
|
||||
|
|
|
@ -2481,7 +2481,7 @@ def test_datetimes_api_meetings_agenda_date_time_period(app):
|
|||
@pytest.mark.freeze_time('2022-10-24 10:00')
|
||||
def test_datetimes_api_meetings_virtual_agenda_date_time_period(app):
|
||||
agenda = Agenda.objects.create(
|
||||
label='Foo bar', kind='meetings', minimal_booking_delay=0, maximal_booking_delay=8
|
||||
label='Foo bar', kind='meetings', minimal_booking_delay=0, maximal_booking_delay=30
|
||||
)
|
||||
desk = Desk.objects.create(agenda=agenda, label='desk')
|
||||
meeting_type = MeetingType.objects.create(agenda=agenda, label='Plop', duration=30)
|
||||
|
@ -2509,8 +2509,16 @@ def test_datetimes_api_meetings_virtual_agenda_date_time_period(app):
|
|||
weekday=0, start_time=datetime.time(12, 00), end_time=datetime.time(13, 00), agenda=virtual_agenda
|
||||
)
|
||||
resp = app.get(api_url)
|
||||
resp = app.get(api_url)
|
||||
assert [x['datetime'] for x in resp.json['data']] == [
|
||||
'2022-10-24 13:00:00',
|
||||
'2022-10-24 13:30:00',
|
||||
]
|
||||
|
||||
# add second exclusion period on virtual agenda
|
||||
TimePeriod.objects.create(
|
||||
weekday=0, start_time=datetime.time(13, 30), end_time=datetime.time(14, 00), agenda=virtual_agenda
|
||||
)
|
||||
resp = app.get(api_url)
|
||||
assert [x['datetime'] for x in resp.json['data']] == [
|
||||
'2022-10-24 13:00:00',
|
||||
]
|
||||
|
|
Loading…
Reference in New Issue