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)
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)
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)
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 })
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')
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>')
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))
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})
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})
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) })
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 })
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())