def test_forms(self): form_data = { 'first_name': 'Bat', 'last_name': 'Tuvshin', 'e_mail_address': '*****@*****.**', 'country_name': 'MN', 'address': 'Ulaanbaatar', 'phone_number': '999999999' } form = ReservationForm(data=form_data) self.assertTrue(form.is_valid())
def load_dates(request): print(request.GET) start_date_id = request.GET.get('start_date') end_date_id = request.GET.get('end_date') segment = int(request.GET.get('segment')) date_form = ReservationForm(request.GET) if date_form.is_valid(): start_date = date_form.cleaned_data['start_date'] end_date = date_form.cleaned_data['end_date'] price = calculate_price(segment, end_date, start_date, 100) return HttpResponse(str(price)) return HttpResponse('')
def get_reservation_form_for_perms(request, post, instance): if post == True: if instance: form = ReservationForm(request.POST, instance=instance) else: form = ReservationForm(request.POST) else: if instance: form = ReservationForm(instance=instance) else: form = ReservationForm() # ensure we only show official guest rooms unless the user is a house admin. if not request.user.groups.filter(name='house_admin'): form.fields['room'].queryset = Room.objects.filter(primary_use="guest") return form
def get(self, request, car): description = Car.objects.get(id=car) form = ReservationForm() return render(request, 'car_view.html', { 'description': description, 'form': form })
def opac(): form = ReservationForm() success_message = error_message = None # return jsonify(session['user']) return render_template('nav/opac.html', form=form, success_message=success_message, error_message=error_message)
def post(self, request, car): form = ReservationForm(request.POST) description = Car.objects.get(id=car) if not request.user.is_authenticated: return redirect('/login') if form.is_valid(): data1 = form.cleaned_data['start_date'] data2 = form.cleaned_data['end_date'] reservation = Reservation(user=request.user, car=description, start_date=data1, end_date=data2) is_available = reservation.check_dates() if data1 > data2: return render( request, 'car_view.html', { 'description': description, 'form': form, 'message': 'Data zakończenia wynajmu jest wcześniejsza niż rozpoczęcia!' }) if is_available: reservation.save() return redirect('/email') else: return render( request, 'car_view.html', { 'description': description, 'form': form, 'message': 'Auto jest niedostępne w tym terminie!' }) else: return render(request, 'car_view.html', { 'description': description, 'form': form })
def ReservationEdit(request, reservation_id, location_slug): logger.debug("Entering ReservationEdit") location = get_location(location_slug) reservation = Reservation.objects.get(id=reservation_id) # need to pull these dates out before we pass the instance into # the ReservationForm, since it (apparently) updates the instance # immediately (which is weird, since it hasn't validated the form # yet!) original_arrive = reservation.arrive original_depart = reservation.depart original_room = reservation.room if request.user.is_authenticated() and request.user == reservation.user: logger.debug("ReservationEdit: Authenticated and same user") if request.user in reservation.location.house_admins.all(): is_house_admin = True else: is_house_admin = False if request.method == "POST": logger.debug("ReservationEdit: POST") # don't forget to specify the "instance" argument or a new object will get created! #form = get_reservation_form_for_perms(request, post=True, instance=reservation) form = ReservationForm(location, request.POST, instance=reservation) if form.is_valid(): logger.debug("ReservationEdit: Valid Form") # if the dates have been changed, and the reservation isn't # still pending to begin with, notify an admin and go back to # pending. logger.debug("is_pending: %s" % reservation.is_pending()) logger.debug("arrive: %s, original: %s" % (reservation.arrive, original_arrive)) logger.debug("depart: %s, original: %s" % (reservation.depart, original_depart)) logger.debug("room: %s, original: %s" % (reservation.room, original_room)) if (not reservation.is_pending() and (reservation.arrive != original_arrive or reservation.depart != original_depart or reservation.room != original_room )): logger.debug("reservation room or date was changed. updating status.") reservation.pending() # notify house_admins by email updated_reservation_notify(reservation) client_msg = 'The reservation was updated and the new information will be reviewed for availability.' else: client_msg = 'The reservation was updated.' # save the instance *after* the status has been updated as needed. form.save() messages.add_message(request, messages.INFO, client_msg) return HttpResponseRedirect(reverse("reservation_detail", args=(location.slug, reservation_id))) else: #form = get_reservation_form_for_perms(request, post=False, instance=reservation) form = ReservationForm(location, instance=reservation) return render(request, 'reservation_edit.html', {'form': form, 'reservation_id': reservation_id, 'arrive': reservation.arrive, 'depart': reservation.depart, 'is_house_admin' : is_house_admin, 'location': location }) else: return HttpResponseRedirect("/")
def ReservationSubmit(request, location_slug): location=get_location(location_slug) if request.method == 'POST': form = ReservationForm(location, request.POST) if form.is_valid(): reservation = form.save(commit=False) reservation.user = request.user reservation.location = location reservation.save() # Resetting the rate will also generate a bill reservation.reset_rate() new_reservation_notify(reservation) messages.add_message(request, messages.INFO, 'Thanks! Your reservation was submitted. You will receive an email when it has been reviewed. Please <a href="/people/%s/edit/">update your profile</a> if your projects or other big ideas have changed since your last visit.<br><br>You can still modify your reservation.' % reservation.user.username) return HttpResponseRedirect(reverse('reservation_detail', args=(location_slug, reservation.id))) else: print form.errors # GET request else: form = ReservationForm(location) # pass the rate for each room to the template so we can update the cost of # a reservation in real time. rooms = Room.objects.all() room_list = {} for room in rooms: room_list[room.name] = room.default_rate room_list = json.dumps(room_list) return render(request, 'reservation.html', {'form': form, "room_list": room_list, 'max_days': location.max_reservation_days, 'location': location })
def ReservationManage(request, location_slug, reservation_id): location = get_location(location_slug) reservation = get_object_or_404(Reservation, id=reservation_id) user = User.objects.get(username=reservation.user.username) other_reservations = Reservation.objects.filter(user=user).exclude(status='deleted').exclude(id=reservation_id) past_reservations = [] upcoming_reservations = [] for res in other_reservations: if res.arrive >= datetime.date.today(): upcoming_reservations.append(res) else: past_reservations.append(res) domain = Site.objects.get_current().domain emails = EmailTemplate.objects.filter(Q(shared=True) | Q(creator=request.user)) email_forms = [] email_templates_by_name = [] for email_template in emails: form = EmailTemplateForm(email_template, reservation, location) email_forms.append(form) email_templates_by_name.append(email_template.name) availability = Room.objects.availability(reservation.arrive, reservation.depart, location) free = Room.objects.free(reservation.arrive, reservation.depart, location) per_date_avail = availability[availability.keys()[0]] dates = [tup[0] for tup in per_date_avail] if reservation.room in free: room_has_availability = True else: room_has_availability = False edit_form = ReservationForm(location, request.POST, instance=reservation) return render(request, 'reservation_manage.html', { "r": reservation, "past_reservations":past_reservations, "upcoming_reservations": upcoming_reservations, "email_forms" : email_forms, "email_templates_by_name" : email_templates_by_name, "days_before_welcome_email" : location.welcome_email_days_ahead, "room_has_availability" : room_has_availability, "avail": availability, "dates": dates, "domain": domain, 'location': location, "edit_form": edit_form, })