예제 #1
0
 def tearDown(self):
     with self.app.test_request_context():
         self.assertIsNotNone(self.operator)
         Restaurant.delete(self.operator.restaurant_id)
         User.delete(self.operator.id)
         for res_id in self.reservation_ids:
             Reservation.delete_customer_reservation(res_id)
예제 #2
0
    def test_delete_customer(self):
        with self.app.app_context():

            for res_id in self.reservation_ids:
                Reservation.delete_customer_reservation(res_id)
                r = Reservation.get_reservation(res_id)
                self.assertIsNone(r)
예제 #3
0
def update_status(reservation_id: int, status: int, time: datetime = None):
    res = Reservation.get_reservation(reservation_id=int(reservation_id))
    if (res is not None and res.restaurant_id == current_user.restaurant_id):
        mess = Reservation.update_reservation_status(
            reservation_id=int(reservation_id), status=status, time=time)
        return mess
    return None
def _reserve(restaurant_id):
    form = ReservationForm()
    restaurant = Restaurant.get(restaurant_id)

    if (request.method == 'POST'):

        if (current_user.is_positive):
            return render_template(
                'error.html',
                error_message=
                "Error: you cannot reserve a table while marked as positive!")

        reservation_time = datetime.combine(
            ReservationForm(request.form).data['reservation_date'],
            ReservationForm(request.form).data['reservation_time'])
        if (reservation_time <= datetime.now()):
            flash(
                'Invalid Date Error. You cannot reserve a table in the past!',
                'booking')
            return redirect(request.referrer)
        if ReservationForm(request.form).validate_on_submit():
            seats = ReservationForm(request.form).data['seats']
            id = Reservation.new(int(current_user.id), int(restaurant_id),
                                 reservation_time, seats)
            if (id):
                flash('Reservation added correctly', 'booking')
                return redirect('/restaurants')
            else:
                flash(
                    'Overbooking notification: no table available at the requested time',
                    'booking')
                return redirect('/restaurants')
    return render_template('reserve.html', name=restaurant.name, form=form)
예제 #5
0
def home(page: int):
    reservations, more = Reservation.get_paged_reservations(
        restaurant_id=current_user.restaurant_id, page=page)
    users = []
    for reservation in reservations:
        user = User.get(id=reservation.user_id)
        users.append(user)
    res = zip(reservations, users)
    if not reservations and page > 1:
        return "", 404
    else:
        return render_template("reservations.html",
                               reservations=res,
                               current_page=page,
                               morepages=more,
                               customers=Reservation.get_seated_customers(
                                   restaurant_id=current_user.restaurant_id),
                               today=False)
예제 #6
0
    def test_get_reservations(self):
        try:
            with self.app.app_context():
                for res in self.reservations:
                    res_id = Reservation.new(**res)
                    self.reservation_ids.append(res_id)

                r = Reservation.get_customer_reservations(1)
                self.assertIsNotNone(r)

                r = Reservation.get_paged_reservations(self.restaurant_id, 1)
                self.assertIsNotNone(r)

                r = Reservation.get_paged_reservation_of_today(
                    self.restaurant_id, 1)
                self.assertIsNotNone(r)

                for res_id in self.reservation_ids:
                    r = Reservation.get_reservation(res_id)
                    self.assertIsNotNone(res_id)

                sc = Reservation.get_seated_customers(self.restaurant_id)
                self.assertEqual(sc, 0)

                r = Reservation.get_reservation(-1)
                self.assertIsNone(r)

                r = Reservation.get_customer_reservations(2)
                self.assertEqual(len(r), 0)

                r, _ = Reservation.get_paged_reservation_of_today(1000, 1)
                self.assertEqual(len(r), 0)

                r, _ = Reservation.get_paged_reservations(1000, 1)
                self.assertEqual(len(r), 0)
        except Exception as e:
            logging.error(e)
            self.fail('failed')
예제 #7
0
def get_reservations():
    form = ReservationForm()
    reservations = Reservation.get_customer_reservations(current_user.id)
    n_of_res = len(reservations)
    restaurants = []

    for reservation in reservations:
        restaurant = Restaurant.get(reservation.restaurant_id)
        restaurants.append(restaurant)
    
    res = zip(reservations, restaurants)

    return render_template("customer_reservations.html",
                           reservations=res, form=form, n_of_res = n_of_res)
예제 #8
0
def update_user_reservation(reservation_id: int):
    form = ReservationForm()
    if request.method == 'POST':
        new_date = new_date = datetime.combine(form.data['reservation_date'],
                            form.data['reservation_time'])
        if (new_date <= datetime.now()):
            flash(
                'Invalid Date Error. You cannot reserve a table in the past!',
                'reservation_mod')
            return redirect('/my_reservations/')
        if form.validate_on_submit():
            new_seats = form.data['seats']
            mess = Reservation.update_customer_reservation(int(reservation_id), new_date, new_seats)
            flash(mess, 'reservation_mod')
            return redirect('/my_reservations/')
예제 #9
0
    def test_update(self):
        with self.app.app_context():
            new_res_time = datetime.combine(datetime.today(), time(21, 00))

            for res in self.reservations:
                res_id = Reservation.new(**res)
                self.assertIsNotNone(res_id)
                self.reservation_ids.append(res_id)

            for res_id in self.reservation_ids:
                Reservation.update_customer_reservation(
                    res_id, new_res_time, 4)
                Reservation.update_reservation_status(res_id, 2)

                r = Reservation.get_reservation(res_id)
                self.assertIsNotNone(r)
예제 #10
0
def delete_user_reservation(reservation_id: int):
    mess = Reservation.delete_customer_reservation(int(reservation_id))
    flash(mess, 'reservation_mod')
    return redirect(request.referrer)
예제 #11
0
 def test_create_reservation(self):
     with self.app.test_request_context():
         for res in self.reservations:
             res_id = Reservation.new(**res)
             self.assertIsNotNone(res_id)
             self.reservation_ids.append(res_id)