示例#1
0
 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())
示例#2
0
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('')
示例#3
0
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
示例#4
0
 def get(self, request, car):
     description = Car.objects.get(id=car)
     form = ReservationForm()
     return render(request, 'car_view.html', {
         'description': description,
         'form': form
     })
示例#5
0
文件: site.py 项目: jmacj/xlibsys
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)
示例#6
0
    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
            })
示例#7
0
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("/")
示例#8
0
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 })
示例#9
0
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,
	})