示例#1
0
    def post(self, request, *args, **kwargs):
        staff_data = get_object_or_404(Staff, id=self.kwargs['pk'])
        year = self.kwargs.get('year')
        month = self.kwargs.get('month')
        day = self.kwargs.get('day')
        hour = self.kwargs.get('hour')
        start_time = make_aware(datetime(year=year, month=month, day=day, hour=hour))
        end_time = make_aware(datetime(year=year, month=month, day=day, hour=hour + 1))
        booking_data = Booking.objects.filter(staff=staff_data, start=start_time)
        form = BookingForm(request.POST or None)
        if booking_data.exists():
            form.add_error(None, '既に予約があります。\n別の日時で予約をお願いします。')
        else:
            if form.is_valid():
                booking = Booking()
                booking.staff = staff_data
                booking.start = start_time
                booking.end = end_time
                booking.first_name = form.cleaned_data['first_name']
                booking.last_name = form.cleaned_data['last_name']
                booking.tel = form.cleaned_data['tel']
                booking.remarks = form.cleaned_data['remarks']
                booking.save()
                return redirect('thanks') 

        return render(request, 'app/booking.html', {
            'staff_data': staff_data,
            'year': year,
            'month': month,
            'day': day,
            'hour': hour,
            'form': form,
        })
示例#2
0
def book(event_id):
    data = db.session.query(Event).join(
        Location, Location.id == Event.location_id).with_entities(
            Event.name, Event.capacity, Event.start, Event.end,
            Location.name.label('location_name'), Location.address,
            Event.img_name).filter(Event.id == event_id).first()

    ticket_amt = [(i, i) for i in range(1, data.capacity + 1)]
    form = BookingForm()
    form.amount.choices = ticket_amt

    if data is None:
        return render_template('error_event.html')
    if form.validate_on_submit():
        event = Event.query.get(event_id)
        event.capacity -= form.amount.data
        booking = Booking(user_id=current_user.id,
                          event_id=event_id,
                          quantity=form.amount.data,
                          book_time=datetime.utcnow(),
                          last_modified=datetime.utcnow())
        db.session.add(booking)
        db.session.commit()
        app.logger.info(
            'User ID {} has booked {} tickets (Booking ID {}) for Event ID {} at {}.'
            .format(booking.user_id, booking.quantity, booking.id,
                    booking.event_id, datetime.now()))
        flash(
            'Successfully purchased {} tickets for {}'.format(
                form.amount.data, data.name), "info")
        return redirect(url_for('main_panel.events'))
    return render_template('book.html',
                           event_id=event_id,
                           data=data,
                           form=form)
示例#3
0
def index():
    form = BookingForm()  #Variabel för formen som finns i forms.py

    if form.validate_on_submit():

        try:
            if int(form.tableInt.data) <= 47 and int(
                    form.tableInt.data
            ) >= 1:  #Verifierar att användaren inte tar något bordsnummer som inte finns i kartan
                table = Table(
                    tableInt=int(form.tableInt.data),
                    isBooked=True,
                    username=current_user.username
                )  #Den här variabeln ger datan som sedan ska läggas till i databasen
                db.session.add(table)  #Lägg till i databasen
                db.session.commit()  #Uppdatera databasen med ny data
                flash('Du har nu bokat ett bord')  ## Nu funkar allt bra
            else:  ##om användaren skirver in t.ex. 56 kommer den här köras
                flash('Det finns ingen plats som heter så')
        except:  #Om det blir helt fel, t.ex. om användaren skirver in bokstäver i formen, så hamnar man här, därför att formens data konverteras till int
            flash(
                'Bokningen kunde inte slutföras, kolla att du inte tar en upptagen plats!'
            )
        return redirect(url_for('index'))  ##användaren skickas tll hemsidan
    tableInfo = Table.query.order_by(
        Table.tableInt).all()  #variabel som har värderna i modelen Table

    return render_template(
        'index.html', title='Home', form=form, tableInfo=tableInfo
    )  #visar hemsidan och skickar med information som kan användas med jinja2
示例#4
0
def accept_blast(blast_id):
    blast = Blast.query.filter_by(id=blast_id,
                                  receiver=current_user.id).first()
    if not blast:
        flash('Invalid Blast selected')
        return redirect(url_for('index'))

    form = BookingForm()
    dog_name = blast.slot.subject.dog_name

    if form.validate_on_submit():
        user_id = current_user
        # Update blast record
        blast.status = BOOKED

        # Update parent slot
        blast.slot.status = BOOKED
        blast.slot.booker = current_user
        blast.comments = form.comments.data
        db.session.commit()

        send_accepted_blast(blast)
        send_blast_fulfilled_email(blast.slot)
        return redirect(url_for('confirmed', slot=blast.slot.id))

    return render_template('book_slot.html',
                           title='Slot booked',
                           slot=blast.slot,
                           dog_name=dog_name,
                           form=form)
示例#5
0
def booking(teacher_id, day, hour):
    form = BookingForm()
    if form.validate_on_submit():
        bk = Booking(teacher_id=teacher_id, day=day, hour=hour)
        bk.student_name = form.contact_info.student_name.data
        bk.student_phone = form.contact_info.student_phone.data
        teacher = Teacher.query.get(teacher_id)
        teacher.set_hour_state(day, hour, False)  # теперь время - занято
        bk.save()
        return render_template("done.html",
                               title={
                                   "label": "Тема",
                                   "value": "Пробный урок"
                               },
                               time={
                                   "label": days[bk.day],
                                   "value": f"{bk.hour}:00"
                               },
                               name=bk.student_name,
                               phone=bk.student_phone)

    return render_template("booking.html",
                           teacher=Teacher.query.get(teacher_id),
                           time={
                               "day": day,
                               "hour": hour
                           },
                           days=days,
                           form=form)
示例#6
0
def render_booking_done():
    teacher = Teacher.query.filter(
        Teacher.id == int(request.form.get("clientTeacher"))).first()
    schedule = Schedule.query.filter(
        Schedule.id == int(request.form.get("schedule"))).first()

    form = BookingForm()
    if form.validate_on_submit():
        name = form.clientName.data
        phone = form.clientPhone.data

        client = Client(name=name, phone=phone)

        db.session.add(client)
        # TODO
        # изменить ли структуру модели Client
        # так что бы хранил не id и ссылку
        # тогда можно без коммита
        db.session.commit()

        db.session.add(
            Booking(client=client.id, teacher=teacher.id,
                    schedule=schedule.id))
        db.session.commit()

        return render_template(
            "booking_done.html",
            name=name,
            phone=phone,
            day=ReadData.day_week.get(schedule.day_week, ""),
            time=schedule.time,
        )
    else:
        return url_for("booking.html")
示例#7
0
def book(request):
	if request.method=="POST":
		print(request.POST)
		form=BookingForm(request.POST)
		form.save()
		del request.session['sess_cust_id']
		return redirect('/')
示例#8
0
def book_event(request):
    """
    Request Handler for booking event
    """
    response = reply_object()
    form = BookingForm(request.POST, request=request)
    if form.is_valid():
        response = form.start_booking_session()
    else:
        response["code"] = settings.APP_CODE["FORM ERROR"]
        response["errors"] = form.errors
    return HttpResponse(simplejson.dumps(response))
示例#9
0
def book_event(request):
    """
    Request Handler for booking event
    """
    response = reply_object()
    form = BookingForm(request.POST, request=request)
    if form.is_valid():
        response = form.start_booking_session()
    else:
        response["code"] = settings.APP_CODE["FORM ERROR"]
        response["errors"] = form.errors
    return HttpResponse(simplejson.dumps(response))
示例#10
0
def create_booking():
    form = BookingForm()
    form['csrf_token'].data = request.cookies['csrf_token']
    print()
    if form.validate_on_submit():
        booking = Booking(book_date=form.data['book_date'],
                          book_start_time=form.data['book_start_time'],
                          book_end_time=form.data['book_end_time'],
                          user_id=form.data['user_id'],
                          service_id=form.data['service_id'])
    db.session.add(booking)
    db.session.commit()
    newbooking = Booking.query.filter_by(id=booking.id).join(Aircraft).one()
    return to_booking(newbooking)
示例#11
0
def calendar(request):
    """
    Booking page
    """
    form = BookingForm()
    return render_to_response('site_calendar.html',
                              context_instance=RequestContext(
                                  request, {"form": form}))
示例#12
0
def book_slot():
    form = BookingForm()

    slot = request.args.get('slot')
    slot = Slot.query.filter_by(id=slot).first()
    dog_name = slot.subject.dog_name

    if form.validate_on_submit():
        user_id = current_user
        slot.comments = form.comments.data
        db.session.commit()
        return redirect(url_for('confirmed', slot=slot.id))

    return render_template('book_slot.html',
                           title='Slot booked',
                           slot=slot,
                           dog_name=dog_name,
                           form=form)
示例#13
0
def booking(teacher_id):
    teacher = db.session.query(Teacher).get_or_404(teacher_id)
    form = BookingForm()
    
    if form.validate_on_submit():
        weekday_ru = request.args.get('day')
        time = request.args.get('time')
        weekday_slug = next(
            (day_en for day_en, day_ru in RU_DAYS.items() if weekday_ru == day_ru),
            None
        )

        booking = Booking(
            username=form.name.data,
            phone=form.phone.data,
            weekday=weekday_ru,
            time=time
        )

        teacher_schedule = json.loads(teacher.schedule)
        teacher_schedule[weekday_slug][time] = False
        teacher.schedule = json.dumps(teacher_schedule)
        teacher.bookings.append(booking)
        db.session.add(teacher)
        db.session.add(booking)
        db.session.commit()

        context = {
            'name': booking.username,
            'phone': booking.phone,
            'lesson_day':  booking.weekday ,
            'lesson_time': booking.time,
            'subject': 'trial',
            'subject_description': 'Пробное занятие'
        }
        return redirect(url_for('sent', context=json.dumps(context)))

    context = {
        'teacher': teacher,
        'lesson_day': RU_DAYS[request.args.get('day')],
        'lesson_time': request.args.get('time')
    }

    return render_template('booking.html', form=form, **context)
示例#14
0
def render_booking(id_teacher, id_schedule):
    teachers_query = Teacher.query.filter(Teacher.id == id_teacher).first()
    schedule_query = Schedule.query.filter(Schedule.id == id_schedule).first()
    form = BookingForm()
    return render_template(
        "booking.html",
        form=form,
        teacher=teachers_query,
        day=ReadData.day_week.get(schedule_query.day_week, ""),
        schedule=schedule_query,
    )
示例#15
0
def book():
    form = BookingForm()
    if form.is_submitted():
        d = datetime.strptime(form.pickup_time.data, "%H:%M")
        time_ = d.strftime('%I:%M %p')
        try:
            booking_details = session['booking_details']
            booking_details['pickup_address'] = form.pickup_address.data
            booking_details['pickup_time'] = time_
            booking_details['user_id'] = current_user.get_id()
            try:
                date_ = datetime.fromtimestamp(booking_details['departure_date'])
                booking_details['departure_date'] = date_.strftime("%m/%d/%Y")
            except TypeError:
                pass
            session['booking_details'] = booking_details
            return redirect(url_for('confirm'))
        except AttributeError:
            flash("All fields are required")
            render_template('book.html', form=form, current_user=current_user)
    return render_template('book.html', form=form, current_user=current_user)
示例#16
0
def book_car_request(id):
    form = BookingForm(date=date.today(),
                       time=datetime.now() + timedelta(hours=1),
                       car_id=id,
                       user_id=current_user.id)
    if form.validate_on_submit():
        time_start = datetime.combine(form.date.data, form.time.data)
        data = {
            'user_id': form.user_id.data,
            'car_id': form.car_id.data,
            'time_start': time_start.isoformat(),
            'hours': form.duration.data
        }
        r = requests.post('http://192.168.1.109:10100/book',
                          json=data,
                          verify=False)
        bookingData = r.json()
        r = requests.get('http://192.168.1.109:10100/cars/{}'.format(
            data['car_id']),
                         verify=False)
        carData = r.json()
        if 'id' in bookingData:
            start = datetime.fromisoformat(
                bookingData['timestart']).strftime("%m/%d/%Y, %H:%M")
            flash('you booked {carname} for {hours} hours starting {start}'.
                  format(carname=carData['name'],
                         hours=bookingData['dration'],
                         start=start))
            return redirect(url_for('index'))
        else:
            flash("The {carname} has been booked, try book another one".format(
                carname=carData['name']))
            return redirect(url_for('index'))
    return render_template('book.html',
                           title='Make a Booking',
                           form=form,
                           id=id)
示例#17
0
    def get(self, request, *args, **kwargs):
        staff_data = Staff.objects.filter(id=self.kwargs['pk']).select_related('user').select_related('store')[0]
        year = self.kwargs.get('year')
        month = self.kwargs.get('month')
        day = self.kwargs.get('day')
        hour = self.kwargs.get('hour')
        form = BookingForm(request.POST or None)

        return render(request, 'app/booking.html', {
            'staff_data': staff_data,
            'year': year,
            'month': month,
            'day': day,
            'hour': hour,
            'form': form,
        })