Beispiel #1
0
def book(request, bookable):
    if not request.user.is_authenticated:
        return render(request, 'modals/forbidden.html')
    booking = Booking()
    bookable_obj = get_object_or_404(Bookable, id_str=bookable)
    context = {
        'url': request.path,
        'bookable': bookable_obj,
        'user': request.user,
    }

    if request.method == 'GET':
        booking.start = dateutil.parser.parse(request.GET['st']) if 'st' in request.GET else datetime.now()
        booking.end = dateutil.parser.parse(request.GET['et']) if 'et' in request.GET else start + timedelta(hours=1)
        booking.bookable = bookable_obj
        booking.user = request.user
        form = BookingForm(instance=booking)
        status = 200
    elif request.method == 'POST':
        form = BookingForm(request.POST, instance=booking)
        if form.is_valid():
            form.save()
            return HttpResponse()
        else:
            status = 400
    else:
        raise Http404
    context['form'] = form
    return render(request, 'book.html', context=context, status=status)
Beispiel #2
0
def createbooking(request):

    if request.POST:
        form = BookingForm(request.POST)
        if form.is_valid:
            form.save()
    else:
        form = BookingForm()
        args = {}
        args['form'] = form

    return render_to_response('booking/booking.html', args)
Beispiel #3
0
def gallery_list_view(request):
    gallery_object_list = Gallery.objects.all()

    if request.method == 'POST':
        contact_form = ContactForm(request.POST)
        booking_form = BookingForm(request.POST)
        if contact_form.is_valid():
            contact_form.save()
            name = contact_form.cleaned_data.get('name')
            email = contact_form.cleaned_data.get('email')
            phone_number = contact_form.cleaned_data.get('phone_number')
            message = contact_form.cleaned_data.get('message')
            messages.success(
                request,
                f'{name}, your details has been sent!, We will get to you as soon as possible. Thank You!'
            )
            send_mail(
                'Contact Request',
                f' {name} has requested to contact you. Contact Info:{phone_number}, {email}. He has left a message : {message}',
                '*****@*****.**', ['*****@*****.**'],
                fail_silently=True)
            return redirect('gallery_list')

        if booking_form.is_valid():
            booking_form.save()
            name = booking_form.cleaned_data.get('name')
            room = booking_form.cleaned_data.get('room')
            check_in = booking_form.cleaned_data.get('check_in')
            check_out = booking_form.cleaned_data.get('check_out')
            adult = booking_form.cleaned_data.get('adult')
            child = booking_form.cleaned_data.get('child')
            messages.success(
                request,
                f' {name}, Your Booking has been successful for {room}, from {check_in} to {check_out} with {adult} adults and {child} childrens.Thank You!!!'
            )
            send_mail(
                f'Booking BY {name} ',
                f'A booking has been made for {room} , from {check_in} to {check_out} with {adult} adults and {child} childrens.',
                '*****@*****.**', ['*****@*****.**'],
                fail_silently=True)
            return redirect('gallery_list')
    else:
        contact_form = ContactForm()
        booking_form = BookingForm()
    context = {
        'booking_form': booking_form,
        'contact_form': contact_form,
        'gallery_object_list': gallery_object_list
    }
    return render(request, 'gallery/gallery_list.html', context)
Beispiel #4
0
def book_room(request, pk):
    if request.method == 'POST':
        booking_form = BookingForm(data=request.POST)

        room = Room.objects.get(pk=pk, available=True)

        print(request.POST.get('check_in_date'))
        # print(booking_form.check_out_date)

        print(booking_form.is_valid())

        if booking_form.is_valid():
            print("valid")

            booking = booking_form.save(commit=False)

            booking.room = room
            booking.customer = request.user.customer

            booking.save()

            return render(request, 'cart.html', {'booking': booking})
        else:
            print(booking_form.errors)

    else:
        booking_form = BookingForm()

    return render(request, 'book.html', {
        'booking_form': booking_form,
        'pk': pk
    })
Beispiel #5
0
def booking(request, resident_id):
    resident = get_object_or_404(booking_models.Resident, pk=resident_id)
    estate = resident.estate
    form = BookingForm(request.GET)
    #import pdb;pdb.set_trace()
    if form.is_valid():
        obj = form.save(commit=False)
        code = randrange(10002321, 99221025)
        obj.code = code
        obj.resident = resident
        obj.save()
        msg = "You have been booked by {resident.name} into\
                {resident.estate.name} with code: {code}".format(
            resident=resident, code=code)
        phone = '234{}'.format(obj.phone[-10:])
        #payload = {
        #    'sender': 'V LOGIN',
        #    'to': '234{}'.format(obj.phone[-10:]),
        #    'msg': msg
        #}
        send_message(phone, msg)
        #sms_url = 'http://shoutinsms.bayo.webfactional.com/api/sendmsg/'
        #requests.get(sms_url, params=payload)
        booking_models.SentMessage.objects.create(resident=resident)
        estate.balance -= 1
        estate.save()
        return HttpResponse('A message has been sent to your visitor.')
    return HttpResponseBadRequest('An error occured. Please try again')
Beispiel #6
0
    def test_success(self):
	data = {
		'user': self.user.id,
		'name_on_teller': 'Ade Oluwa',
		'date_of_payment': '02/03/1956',
		'bank_name': 'GTBank'
		}
	form = BookingForm(data)
	self.assertTrue(form.is_valid())
	b = form.save()
	self.assertEqual(repr(b), '<Booking: Ade Oluwa>')
Beispiel #7
0
def addBooking(request):
    if request.method == 'POST':
        form = BookingForm(request.user, request.POST)
        if form.is_valid():
            booking = form.save(commit=False)
            Booking.objects.clearCache(booking.date.year, booking.date.month)
            if request.user.is_authenticated():
                booking.user = request.user
            booking.save()
            return redirect('/booking') #redirect on success
    else:
        form = BookingForm(request.user)
    return render_to_response('booking/addBooking.html', {'form': form}, context_instance=RequestContext(request))
Beispiel #8
0
def edit_booking(request, booking_id=None):
    """
    View for adding a new booking to the database.

    :param booking_id:
    :param request:
    :return:
    """
    if booking_id:
        booking = get_object_or_404(Booking, pk=booking_id)
    else:
        booking = Booking(requester=request.user)

    form = BookingForm(request.POST or None, instance=booking)
    if request.POST and form.is_valid():
        # check the permissions
        if not request.user.has_perm("booking.change_booking", booking):
            raise PermissionDenied("User may not edit booking")

        booking = form.save()

        form_html = render_crispy_form(
            BookingForm(instance=booking),
            context=csrf(request),
        )
        booking_html = render_to_string(
            "booking/partials/booking-item.html",
            {
                "booking": booking,
                "form": BookingForm(instance=booking),
                "include_game": bool(request.GET.get("include_game", False)),
                "include_group": bool(request.GET.get("include_group", False)),
            },
            request=request,
        )

        return JsonResponse({
            "success": True,
            "form_html": form_html,
            "booking_html": booking_html,
        })

    form_html = render_crispy_form(form, context=csrf(request))
    return JsonResponse({"success": False, "form_html": form_html})
Beispiel #9
0
def event(request, event_datum, event_time, event_dur):
    """
    Render event.html with BookingForm.
    If form is submitted redirect to a confirmation page
    """
    form = BookingForm(request.POST or None)
    yearstr = datetime.strptime(event_datum, '%Y-%m-%d')
    form.fields['date'].initial = yearstr.strftime('%Y-%m-%d')
    form.fields['start_time'].initial = event_time
    form.fields['duration'].initial = event_dur

    if request.POST and form.is_valid():
        instance = form.save(commit=False)
        instance.author = request.user
        instance.save()

        return HttpResponseRedirect(reverse('booking:confirm'))

    return render(request, 'booking/event.html', {'form': form})
Beispiel #10
0
def booking(request):
    """Booking form processing"""

    # If an ID is provided then an existing booking is edited, otherwise a new one is created
    if request.POST.get("id", "") != "":
        book = get_object_or_404(Booking, id=int(request.POST["id"]))
        if book.user == request.user:
            form = BookingForm(request.POST, instance=book)
        else:
            return HttpResponse(status=403)
    else:
        form = BookingForm(request.POST)

    if form.is_valid():
        # User is set to connected user
        book = form.save(commit=False)
        book.user = request.user
        book.save()

        # Return a new component for the created or edited booking
        context = {"booking": book}
        template = loader.get_template("booking/booking.html")

        # 'success' is to tell frontend that a booking component is returned
        return JsonResponse({
            "success": True,
            "html": template.render(context, request)
        })

    # If form is invalid, return the form sub-template including errors
    context = {"booking_form": form}
    template = loader.get_template("booking/booking_form.html")

    # 'success' tells frontend that a form component is returned
    return JsonResponse({
        "success": False,
        "html": template.render(context, request)
    })
Beispiel #11
0
def new_booking(request):
    start_semester = Settings.objects.last().start_semester
    end_semester = Settings.objects.last().end_semester
    user = request.user
    if request.method == "POST":
        form_booking = BookingForm(request.user, request.POST)
        if (form_booking.is_valid()):
            booking = form_booking.save(request.user)
            if booking:
                request.session['booking'] = booking.pk
                return render(request, 'booking/showDates.html',
                              {'booking': booking})
            else:
                messages.error(request, _("Booking alread exists"))
    else:
        form_booking = BookingForm(request.user)
    return render(
        request, 'booking/newBooking.html', {
            'form_booking': form_booking,
            'start_semester': start_semester,
            'end_semester': end_semester,
            'is_staff': user.is_staff
        })
Beispiel #12
0
def FutsalDetailView(request, slug):
    futsal = get_object_or_404(Futsal, slug=slug)
    user = request.user
    # Booking form
    if request.method == "POST":
        form = BookingForm(request.POST or None)
        if form.is_valid():
            instance = form.save(commit=False)
            instance.user = user
            instance.futsal = futsal
            pre_booked = Booking.objects.filter(futsal=instance.futsal,
                                                date=instance.date,
                                                time=instance.time).exists()
            # check if futsal is pre booked
            if pre_booked:
                messages.error(request, 'Already booked by others.')
                instance = form.save(commit=False)
                return HttpResponseRedirect(futsal.get_absolute_url())

            instance.save()
            messages.success(request, 'Futsal Game Booked Successfully.')
            return HttpResponseRedirect(futsal.get_absolute_url())
    else:
        print('error')
        form = BookingForm()
    # check if saved:
    is_saved = False
    if user.profile.favourites.filter(id=futsal.id).exists():
        is_saved = True
    else:
        is_saved = False

    # show bookings of the futsal for today
    bookings = Booking.objects.filter(
        futsal=futsal,
        date=datetime.date.today(),
    )

    context = {
        'form': form,
        'bookings': bookings,
        'futsal': futsal,
        'today': datetime.date.today(),
        'is_saved': is_saved,
        'lat': futsal.lat,
        'lng': futsal.lng,
    }
    return render(request, 'futsalApp/detail.html', context)


# def comment(request):
#     context = {}
#     if request.method == "POST":
#         form = ReviewForm(request.POST or None)
#         if form.is_valid():
#             instance = form.save(commit=False)
#             instance.futsal = request.POST.get('futsal_id')
#             print(instance.futsal)
#             instance.user = request.user
#             instance.save()
#             context['comment'] = instance.review
#             context['user']    = request.user.username
#             context['date']    = instance.date
#             context['futsal']  = instance.futsal
#             return JsonResponse({'data':context})
#     else:
#         form = ReviewForm()
#     return JsonResponse({'error':'Error occoured.'})

# class FutsalDetailView(LoginRequiredMixin, FormMixin, generic.DetailView):
#     model = Futsal
#     template_name = 'futsalApp/detail.html'
#     context_object_name = 'futsal'
#     slug_url_kwarg = 'slug'
#     form_class = BookingForm

#     def get_object(self, queryset=None):
#         obj = super().get_object(queryset=queryset)
#         return obj

#     def check_if_saved(self):
#         user = self.request.user
#         is_saved = False
#         if user.profile.favourites.filter(id=self.get_object().id).exists():
#             is_saved = True
#         return is_saved

#     def get_success_url(self):
#         return HttpResponseRedirect(reverse('futsal-detail', kwargs={'slug':self.get_object().slug}))

#     def get_context_data(self, **kwargs):
#         context = super(FutsalDetailView, self).get_context_data(**kwargs)
#         context['form'] = BookingForm(initial={'post':self.get_object()})
#         context['bookings'] = Booking.objects.filter(
#             futsal=self.get_object(),
#             date=datetime.date.today(),
#             )
#         context['today'] = datetime.date.today()
#         context['is_saved'] = self.check_if_saved()
#         context['review_form'] = ReviewForm()
#         # for frontend values
#         context['lat'] = self.get_object().lat
#         context['lng'] = self.get_object().lng
#         return context

#     def post(self, request, *args, **kwargs):
#         form = self.get_form()
#         if form.is_valid():
#             instance = form.save(commit=False)
#             instance.user = self.request.user
#             instance.futsal = self.get_object()
#             while Booking.objects.filter(futsal=instance.futsal,date=instance.date,time=instance.time).exists():
#                 messages.error(self.request,'Already booked')
#                 instance.save(commit=False)
#                 return HttpResponseRedirect(self.get_object().get_absolute_url())
#             instance.save()
#             messages.success(self.request, 'Futsal Game Booked Successfully.')
#             return self.get_success_url()
#         else:
#             messages.error(self.request, 'Booking Failed')
#             return HttpResponseRedirect(self.get_object().get_absolute_url())