Example #1
0
def ReservationManageUpdate(request, reservation_id):
    if not request.method == "POST":
        return HttpResponseRedirect("/404")

    reservation = Reservation.objects.get(id=reservation_id)
    reservation_action = request.POST.get("reservation-action")
    try:
        if reservation_action == "set-tentative":
            reservation.set_tentative()
        elif reservation_action == "set-confirm":
            reservation.set_confirmed()
            days_until_arrival = (reservation.arrive - datetime.date.today()).days
            if days_until_arrival < settings.WELCOME_EMAIL_DAYS_AHEAD:
                send_guest_welcome([reservation])
        elif reservation_action == "set-comp":
            reservation.set_comp()
        elif reservation_action == "res-charge-card":
            try:
                reservation.reconcile.charge_card()
                reservation.set_confirmed()
                days_until_arrival = (reservation.arrive - datetime.date.today()).days
                if days_until_arrival < settings.WELCOME_EMAIL_DAYS_AHEAD:
                    send_guest_welcome([reservation])
            except stripe.CardError, e:
                raise Reservation.ResActionError(e)
        else:
Example #2
0
def ReservationConfirm(request, reservation_id):
    reservation = Reservation.objects.get(id=reservation_id)
    if not (
        request.user.is_authenticated()
        and request.user == reservation.user
        and request.method == "POST"
        and reservation.status == "approved"
    ):
        return HttpResponseRedirect("/")

    if not reservation.user.profile.customer_id:
        messages.add_message(request, messages.INFO, "Please enter payment information to confirm your reservation.")
    else:
        try:
            reservation.reconcile.charge_card()
            reservation.status = Reservation.CONFIRMED
            reservation.save()
            # if reservation start date is sooner than WELCOME_EMAIL_DAYS_AHEAD,
            # need to send them house info manually.
            days_until_arrival = (reservation.arrive - datetime.date.today()).days
            if days_until_arrival < settings.WELCOME_EMAIL_DAYS_AHEAD:
                send_guest_welcome([reservation])
            messages.add_message(
                request,
                messages.INFO,
                "Thank you! Your payment has been received and a receipt emailed to you at %s" % reservation.user.email,
            )
        except stripe.CardError, e:
            messages.add_message(
                request,
                messages.ERROR,
                "Drat, it looks like there was a problem with your card: <em>%s</em>. Please try again." % (e),
            )
Example #3
0
def ReservationManageUpdate(request, reservation_id):
    if not request.method == 'POST':
        return HttpResponseRedirect('/404')

    reservation = Reservation.objects.get(id=reservation_id)
    reservation_action = request.POST.get('reservation-action')
    try:
        if reservation_action == 'set-tentative':
            reservation.set_tentative()
        elif reservation_action == 'set-confirm':
            reservation.set_confirmed()
            days_until_arrival = (reservation.arrive -
                                  datetime.date.today()).days
            if days_until_arrival < settings.WELCOME_EMAIL_DAYS_AHEAD:
                send_guest_welcome([
                    reservation,
                ])
        elif reservation_action == 'set-comp':
            reservation.set_comp()
        elif reservation_action == 'res-charge-card':
            try:
                reservation.reconcile.charge_card()
                reservation.set_confirmed()
                days_until_arrival = (reservation.arrive -
                                      datetime.date.today()).days
                if days_until_arrival < settings.WELCOME_EMAIL_DAYS_AHEAD:
                    send_guest_welcome([
                        reservation,
                    ])
            except stripe.CardError, e:
                raise Reservation.ResActionError(e)
        else:
Example #4
0
def ReservationConfirm(request, reservation_id):
    reservation = Reservation.objects.get(id=reservation_id)
    if not (request.user.is_authenticated()
            and request.user == reservation.user and request.method == "POST"
            and reservation.status == 'approved'):
        return HttpResponseRedirect("/")

    if not reservation.user.profile.customer_id:
        messages.add_message(
            request, messages.INFO,
            'Please enter payment information to confirm your reservation.')
    else:
        try:
            reservation.reconcile.charge_card()
            reservation.status = Reservation.CONFIRMED
            reservation.save()
            # if reservation start date is sooner than WELCOME_EMAIL_DAYS_AHEAD,
            # need to send them house info manually.
            days_until_arrival = (reservation.arrive -
                                  datetime.date.today()).days
            if days_until_arrival < settings.WELCOME_EMAIL_DAYS_AHEAD:
                send_guest_welcome([
                    reservation,
                ])
            messages.add_message(
                request, messages.INFO,
                'Thank you! Your payment has been received and a receipt emailed to you at %s'
                % reservation.user.email)
        except stripe.CardError, e:
            messages.add_message(
                request, messages.ERROR,
                'Drat, it looks like there was a problem with your card: <em>%s</em>. Please try again.'
                % (e))
Example #5
0
def UserAddCard(request, username):
    ''' Adds a card from either the reservation page or the user profile page.
	Displays success or error message and returns user to originating page.'''

    user = User.objects.get(username=username)
    if not request.method == 'POST' or request.user != user:
        return HttpResponseRedirect('/404')

    token = request.POST.get('stripeToken')
    if not token:
        messages.add_message(request, messages.INFO,
                             "No credit card information was given.")
        return HttpResponseRedirect("/people/%s" % username)

    reservation_id = request.POST.get('res-id')
    if reservation_id:
        reservation = Reservation.objects.get(id=reservation_id)

    stripe.api_key = settings.STRIPE_SECRET_KEY

    try:
        customer = stripe.Customer.create(card=token, description=user.email)
        profile = user.profile
        profile.customer_id = customer.id
        profile.save()

        # if the card is being added from the reservation page, then charge the card
        if reservation_id:
            try:
                # charges card, saves payment details and emails a receipt to
                # the user
                reservation.reconcile.charge_card()
                reservation.status = Reservation.CONFIRMED
                reservation.save()
                days_until_arrival = (reservation.arrive -
                                      datetime.date.today()).days
                if days_until_arrival < settings.WELCOME_EMAIL_DAYS_AHEAD:
                    send_guest_welcome([
                        reservation,
                    ])
                messages.add_message(
                    request, messages.INFO,
                    'Thank you! Your payment has been processed and a receipt emailed to you at %s'
                    % user.email)
                return HttpResponseRedirect("/reservation/%d" %
                                            int(reservation_id))
            except stripe.CardError, e:
                raise stripe.CardError(e)
        # if the card is being added from the user profile page, just save it.
        else:
Example #6
0
def UserAddCard(request, username):
    """ Adds a card from either the reservation page or the user profile page.
	Displays success or error message and returns user to originating page."""

    user = User.objects.get(username=username)
    if not request.method == "POST" or request.user != user:
        return HttpResponseRedirect("/404")

    token = request.POST.get("stripeToken")
    if not token:
        messages.add_message(request, messages.INFO, "No credit card information was given.")
        return HttpResponseRedirect("/people/%s" % username)

    reservation_id = request.POST.get("res-id")
    if reservation_id:
        reservation = Reservation.objects.get(id=reservation_id)

    stripe.api_key = settings.STRIPE_SECRET_KEY

    try:
        customer = stripe.Customer.create(card=token, description=user.email)
        profile = user.profile
        profile.customer_id = customer.id
        profile.save()

        # if the card is being added from the reservation page, then charge the card
        if reservation_id:
            try:
                # charges card, saves payment details and emails a receipt to
                # the user
                reservation.reconcile.charge_card()
                reservation.status = Reservation.CONFIRMED
                reservation.save()
                days_until_arrival = (reservation.arrive - datetime.date.today()).days
                if days_until_arrival < settings.WELCOME_EMAIL_DAYS_AHEAD:
                    send_guest_welcome([reservation])
                messages.add_message(
                    request,
                    messages.INFO,
                    "Thank you! Your payment has been processed and a receipt emailed to you at %s. You will receive an email with house access information and other details %d days before your arrival."
                    % (user.email, settings.WELCOME_EMAIL_DAYS_AHEAD),
                )
                return HttpResponseRedirect("/reservation/%d" % int(reservation_id))
            except stripe.CardError, e:
                raise stripe.CardError(e)
                # if the card is being added from the user profile page, just save it.
        else: