def create_new_restaurant(form: RestaurantForm, user_id: int, max_sit: int): """ This method contains all logic save inside the a new restaurant :return: """ restaurant = Restaurant() form.populate_obj(restaurant) restaurant.owner_id = user_id restaurant.likes = 0 restaurant.covid_measures = form.covid_measures.data db.session.add(restaurant) db.session.commit() for i in range(int(form.n_tables.data)): new_table = RestaurantTable() new_table.restaurant_id = restaurant.id new_table.max_seats = max_sit new_table.available = True new_table.name = "" db.session.add(new_table) db.session.commit() # inserimento orari di apertura days = form.open_days.data for i in range(len(days)): new_opening = OpeningHours() new_opening.restaurant_id = restaurant.id new_opening.week_day = int(days[i]) new_opening.open_lunch = form.open_lunch.data new_opening.close_lunch = form.close_lunch.data new_opening.open_dinner = form.open_dinner.data new_opening.close_dinner = form.close_dinner.data db.session.add(new_opening) db.session.commit() # inserimento tipi di cucina cuisin_type = form.cuisine.data for i in range(len(cuisin_type)): new_cuisine = Menu() new_cuisine.restaurant_id = restaurant.id new_cuisine.cusine = cuisin_type[i] new_cuisine.description = "" db.session.add(new_cuisine) db.session.commit() return restaurant
def create_restaurant(): if current_user is not None and hasattr(current_user, 'id'): if (current_user.role == 'customer' or current_user.role == 'ha'): return make_response( render_template( 'error.html', message= "You are not a restaurant owner! Redirecting to home page", redirect_url="/"), 403) form = RestaurantForm() if request.method == 'POST': if form.validate_on_submit(): # if one or more fields that must not be present are must_not_be_present = [ 'owner_id', 'capacity', 'tot_reviews', 'avg_rating', 'likes' ] if any(k in must_not_be_present for k in request.form): return make_response( render_template('create_restaurant.html', form=RestaurantForm()), 400) working_days_to_add = [] tables_to_add = [] dishes_to_add = [] new_restaurant = Restaurant() # check that all restaurant/working days/tables/dishes fields are correct try: working_days_to_add = _check_working_days( form.workingdays.data) del form.workingdays tables_to_add, tot_capacity = _check_tables( form.tables.data) del form.tables dishes_to_add = _check_dishes(form.dishes.data) del form.dishes form.populate_obj(new_restaurant) new_restaurant.owner_id = current_user.id new_restaurant.capacity = tot_capacity except: return make_response( render_template('create_restaurant.html', form=RestaurantForm()), 400) db.session.add(new_restaurant) db.session.commit() # database check when insert the tables and dishes for l in [working_days_to_add, tables_to_add, dishes_to_add]: for el in l: el.restaurant_id = new_restaurant.id db.session.add(el) db.session.commit() return redirect('/') else: # invalid form return make_response( render_template('create_restaurant.html', form=form), 400) return render_template('create_restaurant.html', form=form) else: return make_response( render_template( 'error.html', message="You are not logged! Redirecting to login page", redirect_url="/login"), 403)