def search(request): return redirect('registration-signup') if request.method == 'GET': input_q = request.GET.get("q","") q = name_seperate(input_q) default_num = 10 #results = personal_ranking(s_qs=SearchQuerySet().auto_query(q).models(*TYPE['all']), user=request.user) # Find location latitude, longitude = get_user_location(request) search_city = request.session.get('search_city', 'Default') spatial_results = spatial_ranking(personal_ranking(SearchQuerySet().models(*TYPE['spatial']).filter(searchable=True), request.user), latitude, longitude).auto_query(q).load_all()[:default_num] spatial_results = get_clear_search_results(spatial_results) results = personal_ranking(SearchQuerySet().models(*TYPE['non_spatial']).filter(searchable=True), request.user).load_all().auto_query(q)[:default_num] results = get_clear_search_results(results) results.extend(spatial_results) rtn = [] for result in results: if result.pk not in request.user.get_profile().blocked_by_user_set: rtn.append(result) return render(request, 'search_result.html', { 'results':rtn, 'search_city':search_city, 'q': input_q, 'default_num': default_num, }) else: return HttpResponseRedirect(slugreverse(request.user, "user-profile", args=[request.user.id]))
def auto_complete_name(request, model): q = request.GET.get('q', None) q = name_seperate(q) rid = request.GET.get('rid', '') if q is None or q == '': return HttpResponse(json.dumps({'error':'query empty'}), mimetype="application/json") q = q.lower() query_list = q.split(" ") results = None for q_o in query_list: if q_o: if not results: results = personal_ranking(s_qs=SearchQuerySet().filter(name__startswith=q_o), user=request.user) # results = SearchQuerySet().filter(name__startswith=q_o) else: results = results.filter(name__startswith=q_o) results = results.models(*TYPE[model])[:5] json_response = [] for result in results: score_field = '%s_d'%request.user.id score = result.__dict__[score_field] if score_field in result.__dict__ else 'x' try: img_url = result.object.get_display_photo().image40x40.url except: img_url = 0 if rid: if result.object.place.pk == rid: item = { 'value': result.pk, 'data': '%s' % (result.object.name), 'score': '%s' % (score), 'img_url': '%s' % (img_url), } else: continue else: item = { 'value': result.pk, 'data': '%s' % (result.object.name), 'score': '%s' % (score), 'img_url': '%s' % (img_url), } json_response.append(item) # json_response.sort(key=lambda obj: obj['data'].lower().startswith(q),reverse=True) # return HttpResponse(json.dumps(json_response), mimetype="application/json") result = '\n'.join(["%s|%s|%s|%s" % (item['data'],item['value'],item['score'],item['img_url']) for item in json_response]) return HttpResponse(result, mimetype="application/html")