def booking_submit(request): if request.method == "POST": form = BookingForm(request.POST) if not request.user.is_authenticated(): return render(request, "booking_submitted.html", {"success":False}) if form.is_valid(): booking = form.save(commit=False) booking.user = request.user # Verify that this booking will not conflict with any others # ie in the same room, with overlapping times # to do this quickly, find all bookings in same room, excluding those with start date after new end date and end date before new start date. This makes sense, I promise... conflicting_bookings = Booking.objects.filter(room=booking.room).exclude(start_date__gte=booking.end_date).exclude(end_date__lte=booking.start_date) print conflicting_bookings if len(conflicting_bookings) > 0: print "conflicts found" return render(request, "booking_submitted.html", {"success":False}) print "no conflicts" booking.save() # block bookings - adds copies of the booking for x number of weeks. TODO conflict res if request.POST['repeat'] == "10times": print "block booking" block_id = uuid.uuid4().int for i in range(1,10): form = BookingForm(request.POST) booking = form.save(commit=False) booking.user = request.user booking.start_date += timedelta(days=7*i) booking.block_booking = block_id booking.save() print booking return render(request, "booking_submitted.html", {"success":True}) return render(request, "booking_submitted.html", {"success":False}) else: return redirect('bookings.views.booking_calendar')
def booking(request, *args, **kwargs): # print request.GET.get('start','n,nbn') tmp = {} model = request.GET.get('model', None) if model: tmp["model_choose"] = model date = request.GET.get('date', None) time = request.GET.get('time', None) if time and date: raw_date = datetime.datetime.strptime(date + ' ' + time, "%Y-%m-%d %I:%M %p") # tmp["arrive_time"] = raw_date.strftime("%d/%m/%Y %H:%M") tmp["arrive_time"] = raw_date.strftime("%Y-%m-%dT%H:%M") user_client = Client.objects.filter(user=request.user) print user_client if user_client: tmp["client"] = user_client[0].id arrive = request.GET.get('arrive', None) airport = request.GET.get('airport', None) passengers = request.GET.get('passengers', None) if arrive: tmp["destination"] = arrive if airport: tmp["airport"] = airport if passengers: tmp["passengers"] = passengers form = BookingForm(tmp) return render(request, 'client/booking.html', {'form': form})
def render_booking(profile_id, day, time): return render_template('booking.html', form=BookingForm(), profile=teachers[profile_id], day=day, time=time, days_of_week=days_of_week)
def book_form(id, day, time): form = BookingForm() teacher = db.session.query(Teacher).filter(Teacher.id == int(id)).one() if form.validate_on_submit(): name = form.name.data phone = form.phone.data day = form.day.data time = form.time.data id = form.id.data teacher = db.session.query(Teacher).filter(Teacher.id == int(id)).one() teacher.schedule[day][time] = False flag_modified(teacher, "schedule") new_booking = Booking(day=day, time=time, client_id=check_client(name, phone), teacher_id=id) db.session.add(new_booking) db.session.commit() return render_template("booking_done.html", name=name, phone=phone, day_name=days[day], time=time) return render_template("booking.html", form=form, teacher=teacher, day=day, day_name=days[day], time=time)
def bookingDetails(carId): """ Routes user to the registration page. Args: carId(str): Car unique identifier Returns: HTML: Bookind details page. """ form = BookingForm() if form.validate_on_submit(): userBookingData = { "pickUpDate": form.pickup_date.data, "pickUpTime": form.pickup_time.data, "returnDate": form.return_date.data, "returnTime": form.return_time.data, "carID": carId, "username": flask.session["username"], } userBookingJSONData = json.dumps(userBookingData, cls=DateTimeEncoder) response = requests.post(flask.request.host_url + "/bookingDetails", json=userBookingJSONData) data = json.loads(response.text) if data["message"] == "Success": flask.flash(data["message"], "success") else: flask.flash(data["message"], "danger") return flask.render_template("bookingDetails.html", form=form)
def save_booking(): if request.method == 'POST': form = BookingForm() booking = Booking(weekday=form.clientWeekday.data, time=form.clientTime.data, teacher_id=form.clientTeacher.data, name=form.clientName.data, phone=form.clientPhone.data) if form.validate_on_submit(): db.session.add(booking) db.session.commit() return render_template('booking_done.html', clientWeekday=booking.weekday, clientTime=booking.time, clientName=booking.name, clientPhone=booking.phone, week=WEEK) return render_template( 'booking.html', form=form, name=db.session.query(Teacher).get(booking.teacher_id).name, day=booking.weekday, hour=booking.time, picture=db.session.query(Teacher).get(booking.teacher_id).picture, id=booking.teacher_id, week=WEEK)
def car_booking(item_id): car = get_car(item_id)['Item'] car['carid'] = int(car['carid']) booking_form = BookingForm() if booking_form.submit5.data and booking_form.validate_on_submit(): if logged_in_user.username == '': return redirect(url_for('car_booking', item_id=item_id, msg="You must login first!")) result1 = request.form event = { 'id': int(time.time()), 'place': result1['place'], 'pickup_date': result1['pick_up_date'], 'days': result1['days'], 'order_date': str(datetime.today()), 'carid': car, 'payment_type': result1['payment_type'], 'username': logged_in_user.username, } resp = rent_car(event) if resp['success']: return redirect(url_for('past_bookings', msg=resp['message'])) else: return redirect(url_for('past_bookings', msg=resp['message'])) return render_template('car-booking.html', bookingform=booking_form, user=logged_in_user, car=car, msg=request.args.get('msg'))
def bookingd7(): form = BookingForm() today = get_today() delta = timedelta(days=1) d7 = today + 7 * delta Booking1 = Booking.query.all() count = 0 for booking1 in Booking1: if booking1.date.strftime("%d/%m/%y") == d7.strftime("%d/%m/%y"): count += 1 appnum = count appnum1 = appnum + 1 apptime = appnum + 10 if request.method == 'POST': booking = Booking(date=d7, appointnum=appnum1, time=apptime, patientname=form.patientname.data, NIC=form.NIC.data, Phonenum=form.Phonenum.data) db.session.add(booking) db.session.commit() return render_template('booking_success.html', date=d7, appointnum=appnum1, appointime=apptime) return render_template('booking1.html', form=form)
def render_booking(profile_id, weekday, time): profile = db.session.query(Teacher).get_or_404(profile_id) form = BookingForm() form.weekday.default = weekday form.time.default = time form.teacher.default = profile_id if request.method == "POST": if form.validate_on_submit(): name = form.name.data time = form.time.data weekday = form.weekday.data teacher_id = form.teacher.data phone = form.phone.data teacher = db.session.query(Teacher).get_or_404(profile_id) booking = Booking(weekday=weekday, time=time, teacher=teacher, teacher_id=teacher_id, name=name, phone=phone) db.session.add(booking) schedule = teacher.free schedule[weekday][time] = False teacher.free = schedule flag_modified(teacher, "free") db.session.commit() return render_template('booking_done.html', weekday=WEEKDAYS[weekday], time=time, name=name, phone=phone) return render_template('booking.html', profile=profile, weekday=WEEKDAYS[weekday], time=time, form=form)
def render_booking(lesson_id): error = '' form = BookingForm() lesson_id = int(lesson_id) lesson = Lesson.query.get_or_404(lesson_id) week_day = lesson.day_name.day_name _time = lesson.time.get_str_time() teacher = lesson.teacher if not lesson.status: error = f'Извините, у {teacher.name} в {week_day.lower()} {_time} нет свободного времени, ' \ f'пожалуйста выберите другое время' if request.method == 'POST' and form.validate_on_submit() and error == '': form.lesson_id.data = int(lesson_id) booking = Booking() form.populate_obj(booking) client_name, client_phone = form.client_name.data, form.client_phone.data lesson.status = False db.session.add_all([lesson, booking]) db.session.commit() return render_template('booking_done.html', week_day=week_day, day_time=_time, name=client_name, phone=client_phone) form.lesson_id.data = str(lesson_id) return render_template('booking.html', teacher=teacher, lesson_id=lesson_id, week_day=week_day, day_time=_time, error=error, form=form)
def render_booking_done(): if request.method != "POST": return redirect(url_for('render_index')) form = BookingForm() name = form.name.data phone = form.phone.data day = request.form.get('clientWeekday') time = request.form.get('clientTime') profile_id = request.form.get('clientTeacher') data = { 'name': name, 'profile_id': profile_id, 'phone': phone, 'day': day, 'time': time } update_data('booking.json', data) return render_template('booking_done.html', name=name, phone=phone, day=days_of_week[day], time=time)
def render_booking(profile_id, day, time): teacher = Teacher.query.filter(Teacher.id == profile_id).scalar() teacher_name = teacher.name teacher_pic = teacher.picture time = time.replace("-", ":") timeslot = (Timeslot.query.filter( db.and_(Timeslot.teacher_id == int(profile_id), Timeslot.weekday == day, Timeslot.time == time))).scalar() timeslot_id = timeslot.id day = days[day] form = BookingForm() return render_template( 'booking.html', teacher_name=teacher_name, teacher_pic=teacher_pic, teacher_id=profile_id, timeslot_id=timeslot_id, day=day, time=time, form=form, )
def booking(): form = BookingForm() form.carnumber.data = request.args['carnumber'] form.user.data = request.args['user'] #form.start_date.data=date.today() #form.end_date.data=date.today() form.number_of_days.data='0' form.cost.data='0' if ((form.validate_on_submit()==True)): form.start_date.data=form.start_date.data form.end_date.data=form.end_date.data form.number_of_days.data = form.setnod(form.start_date,form.end_date).days+1 car = Car.query.filter_by(carnumber=form.carnumber.data).first() price = car.cost_per_hour form.cost.data = form.setcost(form.number_of_days, price) flash('Booking confirmed!', 'success') bid = form.carnumber.data + datetime.strftime(form.start_date.data, '%m/%d/%Y') booking = Booking(booking_id = bid,carnumber = form.carnumber.data,user = form.user.data,start_date = form.start_date.data, end_date = form.end_date.data,start_location = car.location, end_location = None, number_of_days = form.number_of_days.data, cost = form.cost.data) bdb.session.add(booking) car.isAvailable = False cdb.session.commit() bdb.session.commit() print("returning true") return render_template('booking.html', form=form, user = request.args['user'], disabled='true') return render_template('booking.html', form=form, user = request.args['user'], disabled = 'false')
def render_booking(profile_id, weekday, time): profile = get_profile_from_json_by_id(profile_id, TEACHERS_JSON_PATH) form = BookingForm() form.weekday.default = weekday form.time.default = time form.teacher.default = profile_id return render_template('booking.html', profile=profile, weekday=WEEKDAYS[weekday], form=form)
def booking(teacher_id, day_of_week, time): day = days[day_of_week] teacher = db.session.query(Teacher).filter( Teacher.id == teacher_id).first() time = time.replace("-", ":") form = BookingForm() if form.validate_on_submit(): name = form.name.data phone = form.phone.data day = form.day.data time = form.time.data teacher_id = form.teacher.data request_data = Booking(name=name, phone=phone, day=day, time=time, teacher_id=teacher_id) db.session.add(request_data) db.session.commit() return render_template("booking_done.html", form=form, name=name, phone=phone, day=day, time=time) return render_template("booking.html", teacher=teacher, time=time, day=day, form=form)
def booking_view(teacher_id, day, hour): form = BookingForm() return render_template('booking.html', data=TEACHERS_DATA, day=day, hour=hour, day_of_week=day_of_week, form=form, id=teacher_id)
def add_booking(): form = BookingForm() if form.validate_on_submit(): start_date = request.form['start_date'] end_date = request.form['end_date'] name = request.form['name'] email = request.form['email'] write_csv_file(bookings_file_path, [start_date, end_date, name, email]) return redirect(url_for('show_bookings')) return show_bookings(form)
def book(): form = BookingForm() if form.validate_on_submit(): service_name = form.bookingName.data service_date = form.bookingDate.data return redirect( url_for('booktime', service_name=service_name, service_date=service_date)) return render_template('book.html', title='Appointment booker', form=form)
def booking(id, booking_day, booking_time): form = BookingForm() teacher = db.session.query(Teacher).get(int(id)) return render_template('booking.html', form=form, name=teacher.name, day=booking_day, hour=booking_time, picture=teacher.picture, week=WEEK, id=id)
def render_booking_done(): form = BookingForm() if form.validate(): name = form.name.data time = form.time.data weekday = form.weekday.data teacher_id = form.teacher.data phone = form.phone.data write_lesson_to_json(teacher_id, weekday, time, TEACHERS_JSON_PATH) return render_template('booking_done.html', name=name, time=time, weekday=WEEKDAYS[weekday], phone=phone) return 'Данные не получены '
def booking_calendar(request): """ Calendar widget requires booking objects as json. We get all bookings from DB, then convert them to json. This conversion removes several fields from the Booking object, since they cannot be converted to json/aren't required. """ bookings = Booking.objects.all() # Todo: should load only this month's bookings bookings_as_dicts = [] for booking in bookings: bookings_as_dicts.append(booking.to_json()) bookings_json_string = dumps(bookings_as_dicts) form = BookingForm() return render(request, "calendar.html", {'bookings': bookings_json_string, 'form': form})
def booking_form(request): """ Creation d'un formulaire de reservation """ form = BookingForm(request.POST or None) if form.is_valid(): envoi = True booking = form.save(commit=False) booking.author = request.user.username booking.save() return render(request, 'booking/bookingForm.html', locals())
def new_booking_1(): form = BookingForm() if form.validate_on_submit(): booking_details = extract_booking_details(form) create_calendar_reminders(booking_details) create_spreadsheet_entry(booking_details) email_guest_booking_confirmation(booking_details) store_booking_in_database(booking_details) flash("Booking made.") return redirect(url_for('homepage')) return render_template('new_booking_1.html', form=form, properties=settings.PROPERTIES)
def cart_render(): form = BookingForm() cart_items = {} total = 0 if request.method == 'POST': if form.validate_on_submit(): request_data = { 'name': form.name.data, 'address': form.address.data, 'email': form.email.data, 'phone': form.phone.data, 'order_summ': form.order_summ.data, 'order_cart': form.order_cart.data } request_to_db = Order(date=(strftime("%Y-%m-%d %H:%M", gmtime())), total=request_data['order_summ'], status='Pending', phone=request_data['phone'], address=request_data['address'], user_id=current_user.id) db.session.add(request_to_db) for i in request_data['order_cart'][1:-1].split(','): meal = db.session.query(Meal).get(int(i)) request_to_db.meals_list.append(meal) db.session.commit() session['order'] = request_to_db.id session.pop('cart') return redirect(url_for('cart.ordered_render')) if not session.get('cart') is None: cart = db.session.query(Meal).filter(Meal.id.in_(session['cart'])) for id in session['cart']: item = cart.filter(Meal.id == id).first() total += item.price if not id in cart_items: cart_items[item.id] = [item.title, item.price, 1] else: cart_items[item.id][2] += 1 final_total = lambda sum: str(f'{sum:,}').replace(',', ' ') return render_template('cart.html', form=form, cart_items=cart_items, total=total, total_cool=final_total(total))
def booking_add(profile_id, day_name, time_value): teachers, booking = read_db() form = BookingForm(request.form) form.clientTeacher.data = profile_id form.clientWeekday.data = day_name form.clientTime.data = time_value if form.validate(): form.save() return redirect('/booking_done') return render_template("booking.html", teacher=teachers[profile_id], day_name=day_name, time_value=time_value, form=form)
def modify_booking(item_id): booking = get_booking_by_id(item_id) booking_form = BookingForm(place=booking['place'], pick_up_date=booking['pickup_date'], days=booking['days'], payment_type=booking['payment_type']) if booking_form.submit5.data and booking_form.validate_on_submit(): if logged_in_user.username == "": return redirect(url_for('modify_booking', msg="You must be logged in modify the booking.")) result1 = request.form resp = update_booking(item_id, result1['place'], result1['days'], result1['pick_up_date']) if resp['ResponseMetadata']['HTTPStatusCode'] == 200: return redirect(url_for('past_bookings')) else: return redirect(url_for('modify_booking', msg="Something went wrong.")) return render_template('modify-booking.html', bookingform=booking_form, booking=booking, user=logged_in_user, msg=request.args.get('msg'))
def booking(): form = BookingForm() form.carnumber.data = request.args['carnumber'] form.user.data = request.args['user'] form.number_of_days.data = '0' form.cost.data = '0' service = build("calendar", "v3", http=Http()) if ((form.validate_on_submit() == True)): form.start_date.data = form.start_date.data form.end_date.data = form.end_date.data form.number_of_days.data = form.setnod(form.start_date, form.end_date).days + 1 car = Car.query.filter_by(carnumber=form.carnumber.data).first() price = car.cost_per_hour form.cost.data = form.setcost(form.number_of_days, price) flash('Booking confirmed!', 'success') bid = form.carnumber.data + datetime.strftime(form.start_date.data, '%m/%d/%Y') booking = Booking(booking_id=bid, carnumber=form.carnumber.data, user=form.user.data, start_date=form.start_date.data, end_date=form.end_date.data, start_location=car.location, end_location=None, number_of_days=form.number_of_days.data, status=True, cost=form.cost.data, event_id=None) bdb.session.add(booking) eid = booking.addToCalendar(service) eid = eid.split("?eid=", 1) eveid = eid[1] booking.event_id = eveid car.isAvailable = False cdb.session.commit() bdb.session.commit() print("returning true") return render_template('booking.html', form=form, user=request.args['user'], disabled='true') return render_template('booking.html', form=form, user=request.args['user'], disabled='false')
def post(self, request, *args, **kwargs): try: email_form = EmailForm(request.POST, instance=request.user) phone_form = PhoneForm(request.POST, instance=request.user.profile) booking_form = BookingForm(request.POST) tz = pytz.timezone(settings.TIME_ZONE) my_bookings = Booking.objects.filter( madeBy=request.user, start__gt=datetime.now(tz), app_config=self.config).order_by('start') delete_booking = DeleteBooking(request.POST) except AttributeError: return render(request, 'bookings.html') if email_form.is_valid() and phone_form.is_valid( ) and booking_form.is_valid(): email_form.save() phone_form.save() new_booking = booking_form.save(commit=False) if new_booking.start and new_booking.end: new_booking.app_config = self.config free = Booking.objects.free(new_booking.app_config, new_booking.start, new_booking.end) a_booking_spot = BookingConfig.objects.filter( booking_spots__start__exact=new_booking.start.time(), booking_spots__end__exact=new_booking.end.time()).exists() if free and a_booking_spot: new_booking.made_by = request.user Booking.objects.add_booking(new_booking.app_config, new_booking.name, new_booking.made_by, new_booking.start, new_booking.end) if delete_booking.is_valid(): Booking.objects.filter( id__exact=delete_booking.cleaned_data['id']).delete() return render( request, 'bookings.html', { 'email_form': email_form, 'phone_form': phone_form, 'booking_form': booking_form, 'my_bookings': my_bookings, 'delete_booking': delete_booking })
def render_booking(teacher_id, day, time): current_teacher = s.get_teacher(teacher_id) try: s.get_schedule(teacher_id)[day][f"{time}:00"] except KeyError: abort(404) form = BookingForm() return render_template("booking.html", teacher_name=current_teacher.name, teacher_id=teacher_id, teacher_picture=current_teacher.picture, day_key=day, day_value=days[day], time=f"{time}:00", form=form, title="Запись на пробный урок", url=request.url)
def render_booking_item(teacher_id, weekday, time): teacher = Teacher.query.get(teacher_id) form = BookingForm() if request.method == "POST": # если данные post и get отличаются, приводим их к одному виду time = form.clientTime.data teacher_id = int(form.clientTeacher.data) weekday = form.clientWeekday.data day = next((w for w in WEEKDAYS if w[0] == weekday), -1) # # Если данные были отправлены if request.method == "POST": if form.validate_on_submit(): # получаем данные client_name = form.clientName.data client_phone = form.clientPhone.data # TODO Зачем нужен back_populates ведь в этом случае все работало бы и без него booking = Booking(name=client_name, phone=client_phone, teacher_id=teacher_id, weekday=weekday, time=time) db.session.add(booking) db.session.commit() # переходим на booking_done return render_template('booking_done.html', clientName=client_name, clientPhone=client_phone, clientWeekday=day, clientTime=time) # Если данные еще НЕ были отправлены или неверны # выводим форму form.clientTime.data = time form.clientTeacher.data = teacher_id form.clientWeekday.data = weekday return render_template('booking.html', form=form, t=teacher, weekday=day, time=time)