def request_search_and_display( request ): ''' Searches for RideRequests with the given filters in <request>.POST Renders results of the search into "browse.html". This view is different from 'request_search' because it returns HTML, not JSON. ''' form = RideRequestOfferSearchForm( request.POST ) if form.is_valid(): rectangles = json.loads( form.cleaned_data['polygon'] )['rectangles'] bboxArea, bboxContour = _merge_boxes( rectangles ) offer_start_time = form.cleaned_data['date'] offer_fuzziness = form.cleaned_data['fuzziness'] requestEncoder = RideRequestEncoder() ride_requests = _request_search( polygon=bboxContour, date=offer_start_time, fuzziness=offer_fuzziness ) # Filter out outdated requests ride_requests = [r for r in ride_requests if r.date >= datetime.now()] return _browse( request, locals() ) return render_to_response( "index.html", locals(), context_instance=RequestContext(request) )
def offer_search( request ): ''' Searches for and returns any RideOffers whose driving area encompasses that of this RideRequest. ''' # Use the form data form = RideRequestOfferSearchForm( request.POST ) if form.is_valid(): filtered_offers = _offer_search( **form.cleaned_data ) return HttpResponse( json.dumps({"offers":filtered_offers}, cls=RideOfferEncoder), mimetype='application/json' ) # Something went wrong.... return an empty response? return HttpResponse()
def offer_search_and_display( request ): ''' Searches for ride offers per the restrictions given in <request>.POST. Renders the results into the "browse.html" page. This is different from the 'offer_search' view because it renders HTML instead of giving JSON. ''' form = RideRequestOfferSearchForm( request.POST ) if form.is_valid(): ride_offers = _offer_search( **form.cleaned_data ) # Filter outdated results ride_offers = [o for o in ride_offers if o.date >= datetime.now()] return _browse( request, locals() ) return render_to_response( "index.html", locals(), context_instance=RequestContext(request) )