Example #1
0
def ajax_search(request):
    search_results = []
    query = request.GET.get('q', None)

    selected_facet = request.GET.get('type', None)
    try:
        limit = int(request.GET.get('limit', DEFAULT_LIMIT))
    except ValueError:
        limit = DEFAULT_LIMIT

    try:
        offset = int(request.GET.get('offset', 0))
    except ValueError:
        offset = 0

    search_results = Autocomplete.search(query, restrict_type=selected_facet, limit=limit, offset=offset,
                                         restrict_location = request.GET.get('location', None))

    lat, lon = request.GET.get('lat', None), request.GET.get('lng', None)
    orgs_near_me = _get_orgs_near_me(request, query, lat, lon)
    more_results = (search_results.hits - int(offset)) > limit
    related_searches = _get_related_searches(query)

    if 'format' in request.GET and request.GET['format']=='html':
        ret = {'items': render_string(request, 'search/search_items.html', {'search_results' : search_results, 'query': query}),
               'facets': render_string(request, 'search/facets.html', {'search_results': search_results, 'selected_facet': selected_facet, 'query': query}),
               'related': render_string(request, 'search/related_searches.html', {'related_searches': related_searches}),
               'more_results': render_string(request, 'search/more_results.html', {'more_results': more_results})
               }

        if orgs_near_me:
            ret['nearMe'] = render_string(request, 'search/near_me.html', {'orgs_near_me': orgs_near_me})

        return json_response(ret)
Example #2
0
def _get_orgs_near_me(request, query, lat=None, lon=None, distance=40, limit=3):
    orgs_near_me = []
    if not (lat and lon):
        location = ip_to_lat_lon(request.META.get('HTTP_X_FORWARDED_FOR'))
        lat, lon = location.get('latitude'), location.get('longitude')

    if lat and lon:
        # New York = 40.7834345, -73.9662495
        orgs_near_me = Autocomplete.near_me(query, lat, lon, distance, limit)

    return orgs_near_me
Example #3
0
    def handle_row(self, row):
        if row.has_key("location_ids"):
            self.transform_locations(row)

        self.transform_names(row)
        self.transform_issues(row)
        # Again, write a nicer way to do this part and just call super
        model = self.model()
        [setattr(model, self.model_mapper.get(k, k), v) for k, v in row.iteritems()]

        return Autocomplete.from_model(model)
Example #4
0
    def handle_row(self, row):
        if row.has_key('location_ids'):
            self.transform_locations(row)

        self.transform_names(row)
        self.transform_issues(row)
        # Again, write a nicer way to do this part and just call super
        model = self.model()
        [setattr(model, self.model_mapper.get(k, k), v) for k,v in row.iteritems()]

        return Autocomplete.from_model(model)
Example #5
0
def ajax_search(request):
    search_results = []
    query = request.GET.get('q', None)

    selected_facet = request.GET.get('type', None)
    try:
        limit = int(request.GET.get('limit', DEFAULT_LIMIT))
    except ValueError:
        limit = DEFAULT_LIMIT

    try:
        offset = int(request.GET.get('offset', 0))
    except ValueError:
        offset = 0

    search_results = Autocomplete.search(query,
                                         restrict_type=selected_facet,
                                         limit=limit,
                                         offset=offset,
                                         restrict_location=request.GET.get(
                                             'location', None))

    lat, lon = request.GET.get('lat', None), request.GET.get('lng', None)
    orgs_near_me = _get_orgs_near_me(request, query, lat, lon)
    more_results = (search_results.hits - int(offset)) > limit
    related_searches = _get_related_searches(query)

    if 'format' in request.GET and request.GET['format'] == 'html':
        ret = {
            'items':
            render_string(request, 'search/search_items.html', {
                'search_results': search_results,
                'query': query
            }),
            'facets':
            render_string(
                request, 'search/facets.html', {
                    'search_results': search_results,
                    'selected_facet': selected_facet,
                    'query': query
                }),
            'related':
            render_string(request, 'search/related_searches.html',
                          {'related_searches': related_searches}),
            'more_results':
            render_string(request, 'search/more_results.html',
                          {'more_results': more_results})
        }

        if orgs_near_me:
            ret['nearMe'] = render_string(request, 'search/near_me.html',
                                          {'orgs_near_me': orgs_near_me})

        return json_response(ret)
Example #6
0
def autocomplete(request):
    """Legacy autocomplete, still used in the top search bar around the site"""
    def _format_search_result(res, idx):
        type, id = res.id.split(':')
        image_url = res.image_url
        if image_url and not image_url.startswith('http'):
            image_url=_create_static_url(image_url)

        return {'id' : id, 'index': idx, 'name' : res.name[0], 'type' : type, 'url' : res.url,
                'image_url' : image_url, 'num_followers' : res.popularity}

    results = Autocomplete.search(request.GET['search'])
    return json_response([_format_search_result(t, idx) for idx, t in enumerate(results)])
Example #7
0
def _get_orgs_near_me(request,
                      query,
                      lat=None,
                      lon=None,
                      distance=40,
                      limit=3):
    orgs_near_me = []
    if not (lat and lon):
        location = ip_to_lat_lon(request.META.get('HTTP_X_FORWARDED_FOR'))
        lat, lon = location.get('latitude'), location.get('longitude')

    if lat and lon:
        # New York = 40.7834345, -73.9662495
        orgs_near_me = Autocomplete.near_me(query, lat, lon, distance, limit)

    return orgs_near_me
Example #8
0
def search_page(request):
    search_results = []
    orgs_near_me = []
    query = request.GET.get('q',None)
    search_results = Autocomplete.search(query)
    orgs_near_me = _get_orgs_near_me(request, query)
    more_results = search_results.hits > DEFAULT_LIMIT    
    related_searches = _get_related_searches(query)

    more_results = search_results.hits > DEFAULT_LIMIT

    title = "for %s" % query if query else ''

    return render(request, 'search/base.html', {
            'search_results' : search_results,
            'more_results': more_results,
            'query': query,
            'orgs_near_me': orgs_near_me,
            'related_searches': related_searches,
            'title' : "Search %s" % title
            })
Example #9
0
def autocomplete(request):
    """Legacy autocomplete, still used in the top search bar around the site"""
    def _format_search_result(res, idx):
        type, id = res.id.split(':')
        image_url = res.image_url
        if image_url and not image_url.startswith('http'):
            image_url = _create_static_url(image_url)

        return {
            'id': id,
            'index': idx,
            'name': res.name[0],
            'type': type,
            'url': res.url,
            'image_url': image_url,
            'num_followers': res.popularity
        }

    results = Autocomplete.search(request.GET['search'])
    return json_response(
        [_format_search_result(t, idx) for idx, t in enumerate(results)])
Example #10
0
def search_page(request):
    search_results = []
    orgs_near_me = []
    query = request.GET.get('q', None)
    search_results = Autocomplete.search(query)
    orgs_near_me = _get_orgs_near_me(request, query)
    more_results = search_results.hits > DEFAULT_LIMIT
    related_searches = _get_related_searches(query)

    more_results = search_results.hits > DEFAULT_LIMIT

    title = "for %s" % query if query else ''

    return render(
        request, 'search/base.html', {
            'search_results': search_results,
            'more_results': more_results,
            'query': query,
            'orgs_near_me': orgs_near_me,
            'related_searches': related_searches,
            'title': "Search %s" % title
        })
Example #11
0
def ajax_term_complete(request):
    """Term prefix autocomplete, Google-style, completes the phrase"""
    results = {}
    term = request.GET.get('q', None)
    results = Autocomplete.autocomplete(term)
    return json_response(results)
Example #12
0
def ajax_term_complete(request):
    """Term prefix autocomplete, Google-style, completes the phrase"""
    results = {}
    term = request.GET.get('q', None)
    results = Autocomplete.autocomplete(term)
    return json_response(results)