コード例 #1
0
def search(request):
    query = ''
    results = EmptySearchQuerySet()

    if request.GET.get('q'):
        form = ModelSearchForm(request.GET)

        if form.is_valid():
            query = form.cleaned_data['q']
            results = form.search().filter(network=request.network.parent)
    else:
        form = ModelSearchForm()

    paginator = Paginator(results, RESULTS_PER_PAGE)

    try:
        page = paginator.page(int(request.GET.get('page', 1)))
    except InvalidPage:
        raise Http404('No such page')

    context = {
        'form': form,
        'page': page,
        'paginator': paginator,
        'query': query,
        'suggestion': None,
    }

    if getattr(settings, 'HAYSTACK_INCLUDE_SPELLING', False):
        context['suggestion'] = form.get_suggestion()

    return TemplateResponse(request, 'core/search.html', context)
コード例 #2
0
ファイル: views.py プロジェクト: atiberghien/cms-talentpool
def show_talent_pool(request):
    categories = SkillCategory.objects.all()
    selected_skills = []
    people = TalentPeople.objects.all()
    
    template_name = "talentpool/main.html"
    if request.is_ajax():
        template_name = "talentpool/talent-main-mosaic.html"
    
    if request.method == "POST" and request.POST.getlist("skills"):
        selected_skills = [int(x) for x in request.POST.getlist("skills")]
        people = people.filter(skills__in=selected_skills)
        
    elif request.GET.get('q'):
        form = ModelSearchForm(request.GET, searchqueryset=None, load_all=True)
        searchqueryset = form.search()
        results = [ r.object.id for r in searchqueryset if issubclass(type(r.object), TalentPeople)]
        people = TalentPeople.objects.filter(id__in=results)
        selected_skills = []
    
    return render_to_response(template_name,
                              {'people' : people.distinct(),
                               'categories' : categories,
                               'selected_skills' : selected_skills},
                              context_instance=RequestContext(request))
コード例 #3
0
    def post(self, request, load_all=True, searchqueryset=None):
        """
        首页查询功能
        :param request:
        :return:
        """
        # 127.0.0.1:8000/v1/goods/search/
        from dadashop.settings import HAYSTACK_SEARCH_RESULTS_PER_PAGE
        query = ''
        page_size = HAYSTACK_SEARCH_RESULTS_PER_PAGE
        results = EmptySearchQuerySet()
        if request.POST.get('q'):
            form = ModelSearchForm(request.POST,
                                   searchqueryset=searchqueryset,
                                   load_all=load_all)
            if form.is_valid():
                query = form.cleaned_data['q']
                results = form.search()
        else:
            form = ModelSearchForm(searchqueryset=searchqueryset,
                                   load_all=load_all)

        paginator = Paginator(results, page_size)
        try:
            page = paginator.page(int(request.POST.get('page', 1)))
        except:
            result = {'code': 40200, 'error': '页数有误,小于0或者大于总页数'}
            return JsonResponse(result)

        # 记录查询信息
        context = {
            'form': form,
            'page': page,
            'paginator': paginator,
            'query': query,
        }

        sku_list = []
        # print(len(page.object_list))
        for result in page.object_list:
            sku = {
                'skuid': result.object.id,
                'name': result.object.name,
                'price': result.object.price,
            }
            # 获取图片
            sku_image = str(result.object.default_image_url)
            sku['image'] = sku_image
            sku_list.append(sku)
        result = {
            "code": 200,
            "data": sku_list,
            'paginator': {
                'pagesize': page_size,
                'total': len(results)
            },
            'base_url': PIC_URL
        }
        return JsonResponse(result)
コード例 #4
0
def search(request,
           template='search/search.html',
           load_all=True,
           form_class=ModelSearchForm,
           searchqueryset=None,
           context_class=RequestContext,
           extra_context=None,
           results_per_page=None):

    query = ''
    results = EmptySearchQuerySet()

    # We have a query.
    if request.GET.get('q'):

        if request.user.is_authenticated() and '--mine' in request.GET.get(
                'q'):
            searchqueryset = SearchQuerySet().filter(
                author=request.user).order_by('-pub_date')
        else:
            searchqueryset = SearchQuerySet().filter(
                Q(public=True) | Q(author=request.user)).order_by('-pub_date')

        form = ModelSearchForm(request.GET,
                               searchqueryset=searchqueryset,
                               load_all=load_all)

        if form.is_valid():
            query = form.cleaned_data['q']
            results = form.search()
    else:
        form = form_class(searchqueryset=searchqueryset, load_all=load_all)

    paginator = Paginator(results, results_per_page or RESULTS_PER_PAGE)

    try:
        page = paginator.page(int(request.GET.get('page', 1)))
    except InvalidPage:
        raise Http404("No such page of results!")

    context = {
        'form': form,
        'has_snipts': True,
        'page': page,
        'paginator': paginator,
        'query': query,
        'suggestion': None,
    }

    if results.query.backend.include_spelling:
        context['suggestion'] = form.get_suggestion()

    if extra_context:
        context.update(extra_context)

    return render_to_response(template,
                              context,
                              context_instance=context_class(request))
コード例 #5
0
ファイル: views.py プロジェクト: yellobes/asset-manager-old
def search(request):
    if (request.method == 'GET') | (request.method == 'POST'):
        page = request.GET.get('page')
        query = request.GET.get('q')
        _type = request.GET.get('t')

        results = SearchQuerySet().models(Asset)
        if _type == 'people':
            results = SearchQuerySet().models(User)
            for i in results:
                i.num_out = len(AssetCheckout.objects.filter(user=i.object.id).filter(in_date=None))
        else:
            _type = 'asset'
            for result in results:
                result.checkout_info = checkout_info(result)

        for x in request.GET.getlist('|'):
            results = results.filter(content=x)

        for x in request.GET.getlist('!'):
            results = results.exclude(content=x)

        if query:
            form = ModelSearchForm(
                    request.GET,
                    searchqueryset=results,
                    load_all=True
                    )
            if form.is_valid():
                query = form.cleaned_data['q']
                results = form.search()


        paginator = Paginator(results, SEARCH_RESULTS_PER_PAGE)

        try:
            page = paginator.page(page)
        except PageNotAnInteger:
            page = paginator.page(1)
        except EmptyPage:
            page = paginator.page(paginator.num_pages)

        x = (SEARCH_RESULTS_PER_PAGE * page.number)
        page.first = (SEARCH_RESULTS_PER_PAGE * (page.number - 1)) + 1
        page.last = x
        page.total = len(results)

        return render_to_response('Assets/search/%s_results.html' % _type, {'page': page},
                context_instance=RequestContext(request))
    else:
        return render_to_response('Assets/search/index.html',
                context_instance=RequestContext(request))
コード例 #6
0
ファイル: forms.py プロジェクト: AndrewIngram/django-haystack
 def test_models_regression_1(self):
     # Regression for issue #1.
     msf = ModelSearchForm({
         'query': 'test',
         'models': ['core.mockmodel', 'core.anothermockmodel'],
     }, searchqueryset=self.sqs)
     
     self.assertEqual(msf.fields['models'].choices, [('core.anothermockmodel', u'Another mock models'), ('core.mockmodel', u'Mock models')])
     self.assertEqual(msf.errors, {})
     self.assertEqual(msf.is_valid(), True)
     
     sqs_with_models = msf.search()
     self.assertEqual(len(sqs_with_models.query.models), 2)
コード例 #7
0
def search(request):
    query = request.GET.get('q', '')

    search_form = ModelSearchForm(request.GET, load_all=True)
    results = search_form.search()

    query_list = [x.object for x in results]
    players = [x for x in query_list if x.__class__ == Player]

    return render(request, 'website/search.html', {
        'players': players,
        'search_query': query
    })
コード例 #8
0
def search(request):
    query = request.GET.get("q", "")

    search_form = ModelSearchForm(request.GET, load_all=True)
    results = search_form.search()

    query_list = [x.object for x in results]
    players = [x for x in query_list if x.__class__ == Player]

    return render(request, "website/search.html", {
        "players": players,
        "search_query": query
    })
コード例 #9
0
    def test_models_regression_1(self):
        # Regression for issue #1.
        msf = ModelSearchForm({
            'query': 'test',
            'models': ['core.mockmodel', 'core.anothermockmodel'],
        }, searchqueryset=self.sqs)

        self.assertEqual(msf.fields['models'].choices, [('core.anothermockmodel', u'Another mock models'), ('core.mockmodel', u'Mock models')])
        self.assertEqual(msf.errors, {})
        self.assertEqual(msf.is_valid(), True)

        sqs_with_models = msf.search()
        self.assertEqual(len(sqs_with_models.query.models), 2)
コード例 #10
0
ファイル: views.py プロジェクト: MaciejLukianski/snipt
def search(request, template='search/search.html', load_all=True,
           form_class=ModelSearchForm, searchqueryset=None,
           context_class=RequestContext, extra_context=None,
           results_per_page=None):

    query = ''
    results = EmptySearchQuerySet()

    # We have a query.
    if request.GET.get('q'):

        if request.user.is_authenticated() and '--mine' in request.GET.get('q'):
            searchqueryset = SearchQuerySet().filter(author=request.user).order_by('-pub_date')
        else:
            searchqueryset = SearchQuerySet().filter(Q(public=True) | Q(author=request.user)).order_by('-pub_date')

        form = ModelSearchForm(request.GET, searchqueryset=searchqueryset, load_all=load_all)

        if form.is_valid():
            query = form.cleaned_data['q']
            results = form.search()
    else:
        form = form_class(searchqueryset=searchqueryset, load_all=load_all)

    paginator = Paginator(results, results_per_page or RESULTS_PER_PAGE)

    try:
        page = paginator.page(int(request.GET.get('page', 1)))
    except InvalidPage:
        raise Http404("No such page of results!")

    context = {
        'form': form,
        'has_snipts': True,
        'page': page,
        'paginator': paginator,
        'query': query,
        'suggestion': None,
    }

    if results.query.backend.include_spelling:
        context['suggestion'] = form.get_suggestion()

    if extra_context:
        context.update(extra_context)

    return render_to_response(template, context, context_instance=context_class(request))
コード例 #11
0
    def test_models_regression_1(self):
        # Regression for issue #1.
        msf = ModelSearchForm(
            {"query": "test", "models": ["core.mockmodel", "core.anothermockmodel"]},
            searchqueryset=self.sqs,
        )

        self.assertEqual(
            msf.fields["models"].choices,
            [
                ("core.anothermockmodel", "Another mock models"),
                ("core.mockmodel", "Mock models"),
            ],
        )
        self.assertEqual(msf.errors, {})
        self.assertEqual(msf.is_valid(), True)

        sqs_with_models = msf.search()
        self.assertEqual(len(sqs_with_models.query.models), 2)
コード例 #12
0
ファイル: test_forms.py プロジェクト: acdha/django-haystack
    def test_models_regression_1(self):
        # Regression for issue #1.
        msf = ModelSearchForm(
            {"query": "test", "models": ["core.mockmodel", "core.anothermockmodel"]},
            searchqueryset=self.sqs,
        )

        self.assertEqual(
            msf.fields["models"].choices,
            [
                ("core.anothermockmodel", "Another mock models"),
                ("core.mockmodel", "Mock models"),
            ],
        )
        self.assertEqual(msf.errors, {})
        self.assertEqual(msf.is_valid(), True)

        sqs_with_models = msf.search()
        self.assertEqual(len(sqs_with_models.query.models), 2)
コード例 #13
0
class JsonSearchView(View):
    http_method_names = ['get']
    form = None
    queryset = []

    def dispatch(self, request, *args, **kwargs):
        self.form = ModelSearchForm(request.GET)
        return super(JsonSearchView, self).dispatch(request, *args, **kwargs)

    def get(self, *args, **kwargs):
        if self.form.is_valid():
            self.queryset = self.form.search()

        response = {}
        for result in self.queryset:
            if result.model_name in response:
                response[result.model_name].append(result.object.id)
            else:
                response[result.model_name] = [result.object.id]
        return JsonResponse(response)
コード例 #14
0
ファイル: views.py プロジェクト: iamsteadman/meegloo
def search(request):
	query = ''
	results = EmptySearchQuerySet()
	
	if request.GET.get('q'):
		form = ModelSearchForm(request.GET)
		
		if form.is_valid():
			query = form.cleaned_data['q']
			results = form.search().filter(network = request.network.parent)
	else:
		form = ModelSearchForm()
	
	paginator = Paginator(results, RESULTS_PER_PAGE)
	
	try:
		page = paginator.page(
			int(request.GET.get('page', 1))
		)
	except InvalidPage:
		raise Http404('No such page')
	
	context = {
		'form': form,
		'page': page,
		'paginator': paginator,
		'query': query,
		'suggestion': None,
	}
	
	if getattr(settings, 'HAYSTACK_INCLUDE_SPELLING', False):
		context['suggestion'] = form.get_suggestion()
	
	return TemplateResponse(
		request,
		'core/search.html',
		context
	)
コード例 #15
0
ファイル: views.py プロジェクト: nicksergeant/snipt
def search(
    request,
    template="search/search.html",
    load_all=True,
    form_class=ModelSearchForm,
    searchqueryset=None,
    context_class=RequestContext,
    extra_context=None,
    results_per_page=None,
):

    query = ""
    results = EmptySearchQuerySet()

    if request.GET.get("q"):

        searchqueryset = SearchQuerySet().filter(Q(public=True) | Q(author=request.user)).order_by("-pub_date")

        if request.user.is_authenticated() and "mine-only" in request.GET:
            searchqueryset = SearchQuerySet().filter(author=request.user).order_by("-pub_date")

        elif request.user.is_authenticated() and ("author" in request.GET and request.GET.get("author")):

            author = request.GET.get("author")

            if author == request.user.username:
                searchqueryset = SearchQuerySet().filter(author=request.user).order_by("-pub_date")

            else:
                team = get_object_or_None(Team, slug=author)

                if team and team.user_is_member(request.user):
                    searchqueryset = SearchQuerySet().filter(author=team).order_by("-pub_date")

        form = ModelSearchForm(request.GET, searchqueryset=searchqueryset, load_all=load_all)

        if form.is_valid():
            query = form.cleaned_data["q"]
            results = form.search()
    else:
        form = form_class(searchqueryset=searchqueryset, load_all=load_all)

    paginator = Paginator(results, results_per_page or RESULTS_PER_PAGE)

    try:
        page = paginator.page(int(request.GET.get("page", 1)))
    except InvalidPage:
        raise Http404("No such page of results!")

    context = {
        "form": form,
        "has_snipts": True,
        "page": page,
        "paginator": paginator,
        "query": query,
        "suggestion": None,
    }

    if results.query.backend.include_spelling:
        context["suggestion"] = form.get_suggestion()

    if extra_context:
        context.update(extra_context)

    return render(request, template, context)
コード例 #16
0
def search(request,
           template='search/search.html',
           load_all=True,
           form_class=ModelSearchForm,
           searchqueryset=None,
           context_class=RequestContext,
           extra_context=None,
           results_per_page=None):

    query = ''
    results = EmptySearchQuerySet()

    if request.GET.get('q'):

        searchqueryset = SearchQuerySet() \
            .filter(Q(public=True) | Q(author=request.user)) \
            .order_by('-pub_date')

        if request.user.is_authenticated() and \
                'mine-only' in request.GET:
            searchqueryset = SearchQuerySet().filter(author=request.user) \
                .order_by('-pub_date')

        elif request.user.is_authenticated() and \
                ('author' in request.GET and
                    request.GET.get('author')):

            author = request.GET.get('author')

            if author == request.user.username:
                searchqueryset = SearchQuerySet().filter(author=request.user) \
                    .order_by('-pub_date')

            else:
                team = get_object_or_None(Team, slug=author)

                if team and team.user_is_member(request.user):
                    searchqueryset = SearchQuerySet().filter(author=team) \
                        .order_by('-pub_date')

        form = ModelSearchForm(request.GET,
                               searchqueryset=searchqueryset,
                               load_all=load_all)

        if form.is_valid():
            query = form.cleaned_data['q']
            results = form.search()
    else:
        form = form_class(searchqueryset=searchqueryset, load_all=load_all)

    paginator = Paginator(results, results_per_page or RESULTS_PER_PAGE)

    try:
        page = paginator.page(int(request.GET.get('page', 1)))
    except InvalidPage:
        raise Http404("No such page of results!")

    context = {
        'form': form,
        'has_snipts': True,
        'page': page,
        'paginator': paginator,
        'query': query,
        'suggestion': None,
    }

    if results.query.backend.include_spelling:
        context['suggestion'] = form.get_suggestion()

    if extra_context:
        context.update(extra_context)

    return render(request, template, context)