def save_reservation(desk_id, period, user): r = Reservation() r.user = user r.desk = Desk.objects.select_for_update().get(pk = desk_id) period.save() period.final_price = period.get_final_price() period.save() r.period_id = period.id for resv in Reservation.objects.select_for_update().filter(desk__id=desk_id): if resv.period.intersects_with(period): raise Exception("Te biurko zostało już zarezerwowane przez kogoś innego") r.save() log.debug("rezerwacja: ") log.debug(r)