예제 #1
0
파일: views.py 프로젝트: llovett/obietaxi
def ask_for_ride( request ):
    ''' Asks for a ride from a particular offer '''

    data = request.POST
    profile = request.session.get("profile")
    offer = RideOffer.objects.get( pk=ObjectId(data['offer_id']) )
    msg = data['msg']
    request_id = data['request_choices'] if 'request_choices' in data else 'new'

    # See if the logged-in user has already asked for a ride from this person
    for asker in offer.askers:
        if asker.passenger == profile:
            messages.add_message( request, messages.ERROR, "You have already asked to join this ride." )
            return render_to_response( 'ride_offer.html', locals(), context_instance=RequestContext(request) )

    # Get or create the RideRequest
    if request_id == 'new':
        req = RideRequest.objects.create(
            passenger = profile,
            start = offer.start,
            end = offer.end,
            message = msg,
            date = offer.date
        )
        request_id = req.id
        profile.requests.append( req )
        profile.save()
    else:
        req = RideRequest.objects.get( pk=ObjectId(request_id) )
        req.message = msg
        req.save()

    # Stuff that we append to the message
    accept_link = '%s%s'%(
        _hostname(),
        reverse( 'process_ask_for_ride', args=('accept',
                                               offer.id,
                                               request_id) )
    )
    decline_link = '%s%s'%(
            _hostname(),
            reverse( 'process_ask_for_ride', args=('decline',
                                                   offer.id,
                                                   request_id) )
    )
    appended = render_message( "taxi/static/emails/ask_for_ride_accept_or_decline.txt", locals() )
    msg = "\r\n".join( (msg,30*'-',appended) )

    # Save this asker in the offer's 'askers' field
    offer.askers.append( req )
    offer.save()

    dest_email = offer.driver.user.username
    subject = "{} {} is asking you for a ride!".format( request.user.first_name, request.user.last_name )
    send_email( email_to=dest_email, email_body=msg, email_subject=subject )
    messages.add_message( request, messages.SUCCESS, "Your request has been sent successfully." )
    return HttpResponseRedirect( reverse("browse") )
예제 #2
0
파일: views.py 프로젝트: llovett/obietaxi
def offer_ride( request ):
    ''' Sends an offer for a ride to someone who has made a RideRequest '''

    data = request.POST
    profile = request.session.get("profile")
    req = RideRequest.objects.get( pk=ObjectId(data['request_id']) )
    msg = data['msg']
    offer_choices = data['offer_choices'] if 'offer_choices' in data else 'new'

    # Can't offer twice
    for asker in req.askers:
        if asker.driver == profile:
            messages.add_message( request, messages.ERROR, "You have already offered a ride to this person" )
            return render_to_response( 'ride_request.html', locals(), context_instance=RequestContext(request) )

    # Get or create the offer that this request should be associated with
    if offer_choices == 'new':
        offer = RideOffer.objects.create(
            driver = profile,
            start = req.start,
            end = req.end,
            date = req.date,
            message = msg
        )
        profile.offers.append( offer )
        profile.save()
    else:
        offer = RideOffer.objects.get( pk=ObjectId(offer_choices) )
        offer.message = msg
        offer.save()

    # Message to be sent to the passenger
    accept_link = '%s%s'%(
        _hostname(),
        reverse( 'process_offer_ride', args=('accept',
                                             offer.id,
                                             req.id) )
    )
    decline_link = '%s%s'%(
            _hostname(),
            reverse( 'process_offer_ride', args=('decline',
                                                 offer.id,
                                                 req.id) )
    )
    appended = render_message( 'taxi/static/emails/offer_ride_accept_or_decline.txt', locals() )
    msg = "\r\n".join( (msg,30*'-',appended) )

    # Save this asker in the offer's 'askers' field
    req.askers.append( offer )
    req.save()

    dest_email = req.passenger.user.username
    subject = "{} can drive you to {}".format( profile, req.end )
    send_email( email_to=dest_email, email_body=msg, email_subject=subject )
    messages.add_message( request, messages.SUCCESS, "Your offer has been sent successfully." )
    return HttpResponseRedirect( reverse("browse") )