api: order desks by identifier (#48065)
This commit is contained in:
parent
88ae9d52ef
commit
3617c3ff05
|
@ -136,7 +136,7 @@ def get_all_slots(base_agenda, meeting_type, resources=None, unique=False):
|
|||
)
|
||||
for time_period_desk, time_period_exceptions in itertools.groupby(
|
||||
TimePeriodException.objects.filter(desk__agenda__in=agendas).order_by(
|
||||
'desk', 'start_datetime', 'end_datetime'
|
||||
'desk_id', 'start_datetime', 'end_datetime'
|
||||
),
|
||||
key=lambda time_period: time_period.desk,
|
||||
)
|
||||
|
|
|
@ -3586,6 +3586,100 @@ def test_virtual_agendas_meetings_datetimes_api(app, virtual_meetings_agenda):
|
|||
assert len(resp.json['data']) == 3
|
||||
|
||||
|
||||
def test_virtual_agendas_meetings_datetimes_api_with_similar_desk(app):
|
||||
agenda_foo = Agenda.objects.create(
|
||||
label=u'Agenda Foo', kind='meetings', minimal_booking_delay=1, maximal_booking_delay=3
|
||||
)
|
||||
meeting_type_foo = MeetingType.objects.create(agenda=agenda_foo, label='Meeting Type', duration=30)
|
||||
test_1st_weekday = (now()).weekday() + 1 % 7
|
||||
test_2nd_weekday = localtime(now()).weekday() + 2 % 7
|
||||
test_3rd_weekday = (now()).weekday() + 3 % 7
|
||||
|
||||
desk_foo = Desk.objects.create(agenda=agenda_foo, label='Desk 1')
|
||||
TimePeriod.objects.create(
|
||||
weekday=test_1st_weekday,
|
||||
start_time=datetime.time(10, 0),
|
||||
end_time=datetime.time(12, 0),
|
||||
desk=desk_foo,
|
||||
)
|
||||
TimePeriod.objects.create(
|
||||
weekday=test_2nd_weekday,
|
||||
start_time=datetime.time(10, 0),
|
||||
end_time=datetime.time(12, 0),
|
||||
desk=desk_foo,
|
||||
)
|
||||
TimePeriod.objects.create(
|
||||
weekday=test_3rd_weekday,
|
||||
start_time=datetime.time(10, 0),
|
||||
end_time=datetime.time(12, 0),
|
||||
desk=desk_foo,
|
||||
)
|
||||
|
||||
agenda_bar = Agenda.objects.create(
|
||||
label=u'Agenda Bar', kind='meetings', minimal_booking_delay=1, maximal_booking_delay=3
|
||||
)
|
||||
meeting_type_bar = MeetingType.objects.create(agenda=agenda_bar, label='Meeting Type', duration=30)
|
||||
desk_bar = Desk.objects.create(agenda=agenda_bar, label='Desk 1')
|
||||
TimePeriod.objects.create(
|
||||
weekday=test_1st_weekday,
|
||||
start_time=datetime.time(10, 0),
|
||||
end_time=datetime.time(12, 0),
|
||||
desk=desk_bar,
|
||||
)
|
||||
TimePeriod.objects.create(
|
||||
weekday=test_2nd_weekday,
|
||||
start_time=datetime.time(10, 0),
|
||||
end_time=datetime.time(12, 0),
|
||||
desk=desk_bar,
|
||||
)
|
||||
TimePeriod.objects.create(
|
||||
weekday=test_3rd_weekday,
|
||||
start_time=datetime.time(10, 0),
|
||||
end_time=datetime.time(12, 0),
|
||||
desk=desk_bar,
|
||||
)
|
||||
|
||||
virtual_agenda = Agenda.objects.create(
|
||||
label=u'Agenda Virtual', kind='virtual', minimal_booking_delay=1, maximal_booking_delay=3
|
||||
)
|
||||
VirtualMember.objects.create(virtual_agenda=virtual_agenda, real_agenda=agenda_foo)
|
||||
VirtualMember.objects.create(virtual_agenda=virtual_agenda, real_agenda=agenda_bar)
|
||||
|
||||
# 4 slots each day * 3 days
|
||||
foo_api_url = '/api/agenda/%s/meetings/%s/datetimes/' % (agenda_foo.slug, meeting_type_bar.slug)
|
||||
resp = app.get(foo_api_url)
|
||||
assert len(resp.json['data']) == 12
|
||||
# same thing bar agenda
|
||||
bar_api_url = '/api/agenda/%s/meetings/%s/datetimes/' % (agenda_foo.slug, meeting_type_bar.slug)
|
||||
resp = app.get(bar_api_url)
|
||||
assert len(resp.json['data']) == 12
|
||||
# same thing on the virtual agenda
|
||||
virtual_api_url = '/api/agenda/%s/meetings/%s/datetimes/' % (virtual_agenda.slug, meeting_type_bar.slug)
|
||||
resp = app.get(virtual_api_url)
|
||||
assert len(resp.json['data']) == 12
|
||||
|
||||
# exclude first day
|
||||
start = (now() + datetime.timedelta(days=1)).replace(hour=0, minute=0, second=0, microsecond=0)
|
||||
end = (now() + datetime.timedelta(days=1)).replace(hour=23, minute=59, second=59, microsecond=0)
|
||||
TimePeriodException.objects.create(start_datetime=start, end_datetime=end, desk=desk_foo)
|
||||
TimePeriodException.objects.create(start_datetime=start, end_datetime=end, desk=desk_bar)
|
||||
# exclude second day
|
||||
start = (now() + datetime.timedelta(days=2)).replace(hour=0, minute=0, second=0, microsecond=0)
|
||||
end = (now() + datetime.timedelta(days=2)).replace(hour=23, minute=59, second=59, microsecond=0)
|
||||
TimePeriodException.objects.create(start_datetime=start, end_datetime=end, desk=desk_foo)
|
||||
TimePeriodException.objects.create(start_datetime=start, end_datetime=end, desk=desk_bar)
|
||||
|
||||
# 4 slots each day * 1 day
|
||||
resp = app.get(foo_api_url)
|
||||
assert len(resp.json['data']) == 4
|
||||
# same thing bar agenda
|
||||
resp = app.get(bar_api_url)
|
||||
assert len(resp.json['data']) == 4
|
||||
# same thing on the virtual agenda
|
||||
resp = app.get(virtual_api_url)
|
||||
assert len(resp.json['data']) == 4
|
||||
|
||||
|
||||
def test_virtual_agendas_meetings_datetimes_delays_api(app, mock_now):
|
||||
foo_agenda = Agenda.objects.create(label='Foo Meeting', kind='meetings', maximal_booking_delay=7)
|
||||
MeetingType.objects.create(agenda=foo_agenda, label='Meeting Type', duration=30)
|
||||
|
|
Loading…
Reference in New Issue