def search(request): ''' Searches for ingredients. This format is currently used by the ingredient search autocompleter ''' q = request.GET.get('term', None) results = [] if not q: return Response(results) languages = load_ingredient_languages(request) # Perform the search q = request.GET.get('term', '') ingredients = Ingredient.objects.filter( name__icontains=q, language__in=languages, status__in=Ingredient.INGREDIENT_STATUS_OK) results = [] for ingredient in ingredients: ingredient_json = { 'id': ingredient.id, 'name': ingredient.name, 'value': ingredient.name } results.append(ingredient_json) return Response(results)
def search(request): """ Searches for ingredients. This format is currently used by the ingredient search autocompleter """ q = request.GET.get('term', None) results = [] json_response = {} if q: languages = load_ingredient_languages(request) ingredients = Ingredient.objects.filter( name__icontains=q, language__in=languages, status=Ingredient.STATUS_ACCEPTED) for ingredient in ingredients: ingredient_json = { 'value': ingredient.name, 'data': { 'id': ingredient.id, 'name': ingredient.name, } } results.append(ingredient_json) json_response['suggestions'] = results return Response(json_response)
def search(request): ''' Searches for ingredients. This format is currently used by the ingredient search autocompleter ''' q = request.GET.get('term', None) results = [] if not q: return Response(results) languages = load_ingredient_languages(request) # Perform the search q = request.GET.get('term', '') ingredients = Ingredient.objects.filter(name__icontains=q, language__in=languages, status__in=Ingredient.INGREDIENT_STATUS_OK) results = [] for ingredient in ingredients: ingredient_json = {'id': ingredient.id, 'name': ingredient.name, 'value': ingredient.name} results.append(ingredient_json) return Response(results)
def search(request): ''' Searches for ingredients. This format is currently used by the ingredient search autocompleter ''' q = request.GET.get('term', None) results = [] json_response = {} if q: languages = load_ingredient_languages(request) ingredients = Ingredient.objects.filter(name__icontains=q, language__in=languages, status__in=Ingredient.INGREDIENT_STATUS_OK) for ingredient in ingredients: ingredient_json = { 'value': ingredient.name, 'data': { 'id': ingredient.id, 'name': ingredient.name, } } results.append(ingredient_json) json_response['suggestions'] = results return Response(json_response)
def get_queryset(self): """ Filter the ingredients the user will see by its language (the user can also want to see ingredients in English, in addition to his native language, see load_ingredient_languages) """ languages = load_ingredient_languages(self.request) return (Ingredient.objects.accepted().filter(language__in=languages).only('id', 'name'))
def get_queryset(self): ''' Filter the ingredients the user will see by its language (the user can also want to see ingredients in English, in addition to his native language, see load_ingredient_languages) ''' languages = load_ingredient_languages(self.request) return (Ingredient.objects.filter(language__in=languages).filter( status__in=Ingredient.INGREDIENT_STATUS_OK).only('id', 'name'))
def get_queryset(self): ''' Filter the ingredients the user will see by its language (the user can also want to see ingredients in English, in addition to his native language, see load_ingredient_languages) ''' languages = load_ingredient_languages(self.request) return (Ingredient.objects.filter(language__in=languages) .filter(status__in=Ingredient.INGREDIENT_STATUS_OK) .only('id', 'name'))
def get_queryset(self): ''' Filter the ingredients the user will see by its language (the user can also want to see ingredients in English, in addition to his native language, see load_ingredient_languages) ''' languages = load_ingredient_languages(self.request) language_code = self.request.GET.get('language', None) language = None if language_code: language = Language.objects.filter(short_name=language_code).first().id return (Ingredient.objects.filter(language=language) .filter(status__in=Ingredient.INGREDIENT_STATUS_OK) .only('id', 'name')) return (Ingredient.objects.filter(language__in=languages) .filter(status__in=Ingredient.INGREDIENT_STATUS_OK) .only('id', 'name'))
def search(request): ''' Search for an exercise, return the result as a JSON list or as HTML page, depending on how the function was invoked ''' # Filter the ingredients the user will see by its language # (the user can also want to see ingredients in English, see load_ingredient_languages) languages = load_ingredient_languages(request) # Perform the search q = request.GET.get('term', '') ingredients = Ingredient.objects.filter( name__icontains=q, language__in=languages, status__in=Ingredient.INGREDIENT_STATUS_OK) # AJAX-request, this comes from the autocompleter. Create a list and send it back as JSON if request.is_ajax(): results = [] for ingredient in ingredients: ingredient_json = {} ingredient_json['id'] = ingredient.id ingredient_json['name'] = ingredient.name ingredient_json['value'] = ingredient.name results.append(ingredient_json) data = json.dumps(results) # Return the results to the server mimetype = 'application/json' return HttpResponse(data, mimetype) # Usual search (perhaps JS disabled), present the results as normal HTML page else: template_data = {} template_data.update(csrf(request)) template_data['ingredients'] = ingredients template_data['search_term'] = q return render_to_response('ingredient/search.html', template_data, context_instance=RequestContext(request))
def search(request): ''' Search for an exercise, return the result as a JSON list or as HTML page, depending on how the function was invoked ''' # Filter the ingredients the user will see by its language # (the user can also want to see ingredients in English, see load_ingredient_languages) languages = load_ingredient_languages(request) # Perform the search q = request.GET.get('term', '') ingredients = Ingredient.objects.filter(name__icontains=q, language__in=languages, status__in=Ingredient.INGREDIENT_STATUS_OK) # AJAX-request, this comes from the autocompleter. Create a list and send it back as JSON if request.is_ajax(): results = [] for ingredient in ingredients: ingredient_json = {} ingredient_json['id'] = ingredient.id ingredient_json['name'] = ingredient.name ingredient_json['value'] = ingredient.name results.append(ingredient_json) data = json.dumps(results) # Return the results to the server mimetype = 'application/json' return HttpResponse(data, mimetype) # Usual search (perhaps JS disabled), present the results as normal HTML page else: template_data = {} template_data.update(csrf(request)) template_data['ingredients'] = ingredients template_data['search_term'] = q return render_to_response('ingredient/search.html', template_data, context_instance=RequestContext(request))