Beispiel #1
0
 def accept(self, reason=None, force=False):
     if not force:
         collisions = get_prebooking_collisions(self.booking)
         if collisions:
             collision_data = reservation_occurrences_schema.dump(collisions)
             raise ExpectedError('prebooking_collision', data=collision_data)
     self.booking.accept(session.user, reason)
Beispiel #2
0
def test_get_prebooking_collisions(create_reservation, dummy_user,
                                   freeze_time):
    freeze_time(datetime(2020, 3, 20, 12, 0, 0))
    start_dt = datetime(2020, 4, 1, 9, 0)
    end_dt = datetime(2020, 4, 1, 12, 0)

    res1 = create_reservation(start_dt=start_dt,
                              end_dt=end_dt,
                              state=ReservationState.pending)
    res2 = create_reservation(start_dt=start_dt,
                              end_dt=end_dt,
                              state=ReservationState.pending)
    create_reservation(start_dt=end_dt,
                       end_dt=datetime(2020, 4, 1, 15, 0),
                       state=ReservationState.pending)
    res_cancelled = create_reservation(start_dt=start_dt,
                                       end_dt=end_dt,
                                       state=ReservationState.pending)
    res_cancelled.cancel(dummy_user, silent=True)
    res_rejected = create_reservation(start_dt=start_dt,
                                      end_dt=end_dt,
                                      state=ReservationState.pending)
    res_rejected.reject(dummy_user, 'Testing', silent=True)

    collisions = get_prebooking_collisions(res1)
    assert collisions == [res2.occurrences.one()]
Beispiel #3
0
 def accept(self, user, reason=None):
     self.state = ReservationState.accepted
     if reason:
         log_msg = f'Reservation accepted: {reason}'
     else:
         log_msg = 'Reservation accepted'
     self.add_edit_log(ReservationEditLog(user_name=user.full_name, info=[log_msg]))
     notify_confirmation(self, reason)
     signals.rb.booking_state_changed.send(self)
     pre_occurrences = get_prebooking_collisions(self)
     for occurrence in pre_occurrences:
         occurrence.reject(user, 'Rejected due to collision with a confirmed reservation')