manager: do not block adding exceptions on cancelled bookings (#19872)
This commit is contained in:
parent
12950a6012
commit
0ab8ee91d2
|
@ -524,7 +524,9 @@ class TimePeriodException(models.Model):
|
|||
raise ValidationError(_('One or several bookings exists within this time slot.'))
|
||||
|
||||
def has_booking_within_time_slot(self):
|
||||
for event in Event.objects.filter(agenda=self.desk.agenda, booking__isnull=False):
|
||||
for event in Event.objects.filter(agenda=self.desk.agenda,
|
||||
booking__isnull=False,
|
||||
booking__cancellation_datetime__isnull=True):
|
||||
if self.start_datetime <= event.start_datetime < self.end_datetime:
|
||||
return True
|
||||
return False
|
||||
|
|
|
@ -786,7 +786,26 @@ def test_meetings_agenda_add_time_period_exception_when_booking_exists(app, admi
|
|||
resp.form['end_datetime'] = '2017-05-26 17:30'
|
||||
resp = resp.form.submit()
|
||||
assert 'One or several bookings exists within this time slot.' in resp.content
|
||||
assert TimePeriodException.objects.count() == 0
|
||||
|
||||
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')
|
||||
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,
|
||||
start_datetime=datetime.datetime(2017, 5, 22, 10, 30))
|
||||
Booking.objects.create(event=event,
|
||||
cancellation_datetime=datetime.datetime(2017, 5, 20, 10, 30))
|
||||
login(app)
|
||||
resp = app.get('/manage/agendas/%d/' % agenda.pk)
|
||||
resp = resp.click('Add a time period exception')
|
||||
resp.form['start_datetime'] = '2017-05-22 08:00'
|
||||
resp.form['end_datetime'] = '2017-05-26 17:30'
|
||||
resp = resp.form.submit()
|
||||
assert 'One or several bookings exists within this time slot.' not in resp.content
|
||||
assert TimePeriodException.objects.count() == 1
|
||||
|
||||
def test_meetings_agenda_add_invalid_time_period_exception(app, admin_user):
|
||||
agenda = Agenda.objects.create(label='Foo bar', kind='meetings')
|
||||
|
|
Loading…
Reference in New Issue