misc: don't block exceptions because of booking on other desks (#21078)

This commit is contained in:
Frédéric Péters 2018-01-10 17:48:22 +01:00
parent b8b130e4f7
commit 70019d195a
2 changed files with 14 additions and 2 deletions

View File

@ -545,7 +545,8 @@ class TimePeriodException(models.Model):
if not (self.start_datetime and self.end_datetime):
# incomplete time period, can't tell
return False
for event in Event.objects.filter(agenda=self.desk.agenda,
for event in Event.objects.filter(
desk=self.desk,
booking__isnull=False,
booking__cancellation_datetime__isnull=True):
if self.start_datetime <= event.start_datetime < self.end_datetime:

View File

@ -777,7 +777,7 @@ def test_meetings_agenda_add_time_period_exception_when_booking_exists(app, admi
MeetingType(agenda=agenda, label='Blah').save()
TimePeriod.objects.create(weekday=1, desk=desk,
start_time=datetime.time(10, 0), end_time=datetime.time(12, 0))
event = Event.objects.create(agenda=agenda, places=1,
event = Event.objects.create(agenda=agenda, places=1, desk=desk,
start_datetime=make_aware(datetime.datetime(2017, 5, 22, 10, 30)))
Booking.objects.create(event=event)
login(app)
@ -793,6 +793,17 @@ def test_meetings_agenda_add_time_period_exception_when_booking_exists(app, admi
assert 'One or several bookings exists within this time slot.' in resp.content
assert TimePeriodException.objects.count() == 0
# check it's possible to add an exception on another desk
desk = Desk.objects.create(agenda=agenda, label='Desk B')
TimePeriod.objects.create(weekday=1, desk=desk,
start_time=datetime.time(10, 0), end_time=datetime.time(12, 0))
resp = app.get('/manage/agendas/%d/' % agenda.pk)
resp = resp.click('Add a time period exception', href='desk/%s/' % desk.id)
resp.form['start_datetime'] = '2017-05-22 08:00'
resp.form['end_datetime'] = '2017-05-26 17:30'
resp = resp.form.submit()
assert TimePeriodException.objects.count() == 1
def test_meetings_agenda_add_time_period_exception_when_cancelled_booking_exists(app, admin_user):
agenda = Agenda.objects.create(label='Foo bar', kind='meetings')
desk = Desk.objects.create(agenda=agenda, label='Desk A')