def get_details(request, listing_id): user = request.user search_query = request.session.get('search_query') json_query = json.loads(search_query) available_dates_with_price = DBManager.get_available_dates_with_price( listing_id) listing = DBManager.get_listing_for_id(listing_id) best_time = DBManager.get_best_time_to_visit(listing_id) check_in_string = json_query.get('from_date') check_out_string = json_query.get('to_date') dict_dates = { 'check_in': check_in_string, 'check_out': check_out_string, 'available_dates_with_price': available_dates_with_price } if request.method == "POST": booking_form = BookingForm(data=request.POST) if booking_form.is_valid(): booking = booking_form.cleaned_data success = DBManager.add_booking(booking) if success == True: return render(request, 'listing/confirmation.html', {'listing': listing}) else: booking_form.errors['DB Error '] = success return render( request, 'listing/details/details.html', { 'listing': listing, 'booking_form': booking_form, 'dict_dates': dict_dates, 'best_time': best_time }) else: booking = Booking() booking.customer_id = user.user_id booking.listing_id = listing_id booking.number_of_guests = json_query.get('num_guests') booking.price = 0 booking_form = BookingForm(instance=booking) return render( request, 'listing/details/details.html', { 'listing': listing, 'booking_form': booking_form, 'dict_dates': dict_dates, 'best_time': best_time })