Exemplo n.º 1
0
def full_search(request):
    """全局搜索"""
    keywords = request.GET['q']
    sform = SearchForm(request.GET)
    posts = sform.search()
    return render(request, 'blog/post_search_list.html',
                  {'posts': posts, 'list_header': '关键字 \'{}\' 搜索结果'.format(keywords)})
Exemplo n.º 2
0
    def __init__(self, *args, **kwargs):
        slug = kwargs.pop('slug')
        project = Project.objects.get(slug=slug)
        kwargs['searchqueryset'] = (kwargs.get('searchqueryset') or
                SearchQuerySet()).models(Document).filter(project=project.id)

        SearchForm.__init__(self, *args, **kwargs)
Exemplo n.º 3
0
def bids(request):
    context = {}
    #### TOP ####
    bids = Bid.objects.filter(_status__exact='C')
    top_answers = []
    for bid in bids:
        try:
            top_answers.append(Answer.objects.filter(bid=bid.id).order_by('price')[0])
        except:
            pass
    context['top_answers'] = top_answers

    #### ALL_BIDS ####
    bids = Bid.objects.all()
    context["bids"] = bids

    #### SEARCH ####!
    from haystack.forms import SearchForm
    form = SearchForm(request.GET)
    query = form.search()

    try:
        if request.GET["q"]:
            context["is_search"] = True
    except:
        pass

    context["form"] = form
    context["query"] = query

    bid_form = bid_create(request, True)
    #if request.method == "POST"
    context["bid_form"] = bid_form

    return render(request, "core/bids.html", context)
Exemplo n.º 4
0
def full_search(request):
    sform = SearchForm(request.GET)

    posts = sform.search()
    template = 'defaule/app/search-text.html'
    c = Context({'posts': posts})
    return render_to_response(template, c)
Exemplo n.º 5
0
Arquivo: views.py Projeto: tmyyss/Blog
def search(request):
	mblogs=Blog.objects.all().order_by('-visitors')[:5]
	keywords=request.GET['q']
	keywords.encode('gb2312')
	sform=SearchForm(request.GET)
	blogs=sform.search()
	return render(request,'blog/search.html',{'mblogs':mblogs,'blogs':blogs,'list_header':'关键字\'{}\'搜索结果'.format(keywords)})
Exemplo n.º 6
0
def search(request):

    sqs = SearchQuerySet().models(Method)

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

        form = SearchForm(request.GET, searchqueryset=sqs)

        if form.is_valid():
            query = form.cleaned_data['q']
            results = form.search()
            paginator = Paginator(results, 10)

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

    else:
        form = SearchForm(searchqueryset=sqs)
        paginator = None
        page = None
        query = request.GET.get('q')
    
    
    context = {
        'form': form,
        'page': page,
        'paginator': paginator,
        'query': query,
        'suggestion': None,
    }
    
    return render_to_response('search/method_search.html', context, context_instance=RequestContext(request))
Exemplo n.º 7
0
def search(request):
    """Simple search tool"""
    context = get_context(request)
    context['simple_query'] = get_simple_query(request)

    if 'q' not in request.GET:
        return redirect('/')

    query = request.GET['q'].strip()
    if query == '':
        return redirect('/')

    form = SearchForm(request.GET)
    page = request.GET.get('page')
    if settings.ELASTICSEARCH is True:
        sqs = form.search()
        sqs.spelling_suggestion()
        results = ""
        paginator = ""
        if sqs:
            paginator = Paginator(sqs, 25)
            try:
                results = paginator.page(page)
            except PageNotAnInteger:
                # If page is not an integer, deliver first page.
                results = paginator.page(1)
            except EmptyPage:
                # If page is out of range (e.g. 9999), deliver last page of results.
                results = paginator.page(paginator.num_pages)

        context['page'] = results
        context['paginator'] = paginator
        context['results'] = results
        context['voucher_code_list'] = get_voucher_code_list(sqs)
        context['url_encoded_query'] = get_correct_url_query(
            request.GET.urlencode())
        context['result_count'] = len(sqs)
        return render(request, 'public_interface/search_results.html', context)
    else:
        sqs = Vouchers.objects.filter(
            Q(orden__icontains=query) | Q(genus__icontains=query)
            | Q(species__icontains=query) | Q(code__icontains=query), )
        results = ""
        paginator = ""
        if sqs:
            paginator = Paginator(sqs, 25)
            try:
                results = paginator.page(page)
            except PageNotAnInteger:
                # If page is not an integer, deliver first page.
                results = paginator.page(1)
            except EmptyPage:
                # If page is out of range (e.g. 9999), deliver last page of results.
                results = paginator.page(paginator.num_pages)
        context["result_count"] = sqs.count()
        context['page'] = results
        context['paginator'] = paginator
        context['results'] = results
        return render(request, 'public_interface/search_results.html', context)
Exemplo n.º 8
0
    def __init__(self, *args, **kwargs):
        slug = kwargs.pop('slug')
        project = Project.objects.get(slug=slug)
        kwargs['searchqueryset'] = (
            kwargs.get('searchqueryset')
            or SearchQuerySet()).models(Document).filter(project=project.id)

        SearchForm.__init__(self, *args, **kwargs)
Exemplo n.º 9
0
def search(request):
    form = SearchForm(request.GET or None)
    posts = None
    if form.data != {} and form.is_valid():
        posts = form.search()
    return render_to_response('search/search.html', {
        'posts': posts
    }, context_instance=RequestContext(request))
Exemplo n.º 10
0
def full_search(request):
    """全局搜索"""
    keywords = request.GET["q"]
    sform = SearchForm(request.GET)
    posts = sform.search()
    return render(
        request, "blog/post_search_list.html", {"posts": posts, "list_header": "关键字 '{}' 搜索结果".format(keywords)}
    )
Exemplo n.º 11
0
 def test_unbound(self):
     sf = SearchForm({}, searchqueryset=self.sqs)
     
     self.assertEqual(sf.errors, {})
     self.assertEqual(sf.is_valid(), True)
     
     # This shouldn't blow up.
     sqs = sf.search()
     self.assertTrue(isinstance(sqs, EmptySearchQuerySet))
Exemplo n.º 12
0
    def test_unbound(self):
        sf = SearchForm({}, searchqueryset=self.sqs)

        self.assertEqual(sf.errors, {})
        self.assertEqual(sf.is_valid(), True)

        # This shouldn't blow up.
        sqs = sf.search()
        self.assertTrue(isinstance(sqs, EmptySearchQuerySet))
Exemplo n.º 13
0
def full_search(request):
    """全局搜索"""
    keywords = request.GET['q']
    if keywords:
        sform = SearchForm(request.GET)
        posts = sform.search()
        return render(request, 'qs/post_search_list.html',
                      {'posts': posts, 'list_header': '关键字 \'{}\' 搜索结果'.format(keywords)})
    else:
        return redirect('index')
Exemplo n.º 14
0
def search(request):
    results = EmptySearchQuerySet()
    query = request.GET.get('q')
    if query:
        form = SearchForm(request.GET)
        if form.is_valid():
            results = form.search()
    else:
       form = SearchForm()
    return render(request, 'search/search.html', {'form':form, 'results':results, 'query':query})
Exemplo n.º 15
0
def full_search(request):
    """全局搜索"""
    keywords = request.GET['q']
    # 搜索的关键词为用户输入的变量q,该变量是通过前端页面获取的,templates/blog/base.html中32行代码
    sform = SearchForm(request.GET)
    # 搜索表单
    posts = sform.search()
    # 定义搜索对象
    return render(request, 'blog/post_search_list.html',
                  {'posts': posts, 'list_header': '关键字 \'{}\' 搜索结果'.format(keywords)})
Exemplo n.º 16
0
def full_text_search(request):
    keyword = request.GET['q']
    sform = SearchForm(request.GET)
    blogs = sform.search()
    print(blogs.all())
    for t in blogs.all():
        print(t)
    return render(request, 'searchResult.html', {
        "blogs": blogs.all(),
        'list_header': '关键字 \'{}\' '.format(keyword)
    })
Exemplo n.º 17
0
def search_blog(request):
    rs = request.GET['q']
    # print(rs)
    form = SearchForm(request.GET)
    res = form.search()
    # res = SearchQuerySet().models(ckeditorBlog).filter(content=rs).load_all()
    # print(res)
    # for i in posts:
    #     print(i)
    # print(posts)
    return render(request, 'search/search.html', {'res': res})
Exemplo n.º 18
0
def full_search(request):
	"""全局搜索"""
	keywords = request.GET['q']
	sform = SearchForm(request.GET)
	posts = sform.search()
	print '------start'
	for post in posts:
		print post.title
		print 'you'
	print '-------end'
	return render(request, 'blog/post_search_list.html',
		{'posts': posts, 'list_header':'关键字\'{}\'搜索结果'.format(keywords)})
Exemplo n.º 19
0
def post_search(request):
    form = SearchForm()
    search_dict =None
    if 'q' in request.GET:
        form = SearchForm(request.GET)
        cd = request.GET['q']
        posts = form.search()

        total_results = posts.count()
        search_dict = {'posts': posts, 'keyword': cd, 'total_results': total_results, 'form': form,}


    return render(request, 'blog/post/search.html', search_dict)
Exemplo n.º 20
0
 def find_keywords(cls, text):
     whoosh_backend = SearchForm().searchqueryset.query.backend
     if not whoosh_backend.setup_complete:
         whoosh_backend.setup()
     with whoosh_backend.index.searcher() as searcher:
         keywords = searcher.key_terms_from_text(
             'text', text, numterms=10, normalize=False)
     keywords = list(zip(*keywords))[0] if keywords else []
     keywords = [cls._find_representative(keyword, text) for keyword in keywords]
     keywords = [keyword for keyword in keywords if cls._is_good_keyword(keyword)]
     #no double keywords in list
     keywords = list(set(keywords))
     #no punctuation in suggested keywords
     keywords = [''.join(c for c in s if c not in string.punctuation) for s in keywords]
     return keywords
Exemplo n.º 21
0
class GenericBaseViewMixin(object):
  search_form = SearchForm()

  def get_search_form(self, **kwargs):
    """Add the search form to view
    """
    return self.search_form
Exemplo n.º 22
0
def forms(request):
    context = {"search_form": SearchForm()}
    if not request.user.is_authenticated():
        context["login_form"] = AuthenticationForm()
    # TODO: optimize
    context["party"], created = Party.objects.get_or_create(
        site=get_current_site(request))
    context["ANALYTICS_ID"] = getattr(settings, 'ANALYTICS_ID', False)
    return context
Exemplo n.º 23
0
 def get_queryset(self):
     query = ''
     results = []
     
     if self.request.QUERY_PARAMS.get('q'):
         # limit searchqueryset to appropriate model
         searchqueryset = SearchQuerySet().models(self.model)
         # then perform a search on specific model.
         form = SearchForm(self.request.QUERY_PARAMS, 
                           searchqueryset=searchqueryset, load_all=True)
         if form.is_valid():
             query = form.cleaned_data['q']
             results = form.search()
             results = self.filter_results(results)
             # for odd reasons there are duplicates in the haystack results.
             results = list_dedup([r.object for r in results])
     
     return results
Exemplo n.º 24
0
def my_search(request):
    form = SearchForm()
    activities = Stub.objects.filter(group="activities")
    about = Stub.objects.filter(group="about")
    return {
        'mysearchform': form,
        "activitystubs": activities,
        "aboutstubs": about
    }
Exemplo n.º 25
0
def process_query(query, email):
    """Function for processing of a request and sending email with results
    using celery"""
    form = SearchForm({'q': query})
    # Launch searching
    books = form.search()
    # sending email with results
    subject = 'Results of books searching'
    html_content = render_to_string('books/results_email.html', {
        'query': query,
        'books': books,
    })
    text_content = strip_tags(html_content)
    send_mail(subject,
              text_content,
              settings.DEFAULT_FROM_EMAIL, [email],
              fail_silently=True,
              html_message=html_content)
Exemplo n.º 26
0
def index(request):
    if (request.GET.get("q", None) != None):
        return SearchView(template="books/index.html")(request)

    rand_books = Book.objects.all().order_by("?")[:10]
    return render(request, 'books/index.html', {
        'books': rand_books,
        'form': SearchForm()
    })
Exemplo n.º 27
0
def search(request):
    """Simple search tool"""
    context = get_context(request)
    if 'q' not in request.GET:
        return redirect('/')

    query = request.GET['q'].strip()
    if query == '':
        return redirect('/')

    form = SearchForm(request.GET)
    page = request.GET.get('page')
    if settings.ELASTICSEARCH is True:
        sqs = form.search()
        sqs.spelling_suggestion()
        results = ""
        paginator = ""
        if sqs:
            paginator = Paginator(sqs, 25)
            try:
                results = paginator.page(page)
            except PageNotAnInteger:
                # If page is not an integer, deliver first page.
                results = paginator.page(1)
            except EmptyPage:
                # If page is out of range (e.g. 9999), deliver last page of results.
                results = paginator.page(paginator.num_pages)

        context['page'] = results
        context['paginator'] = paginator
        context['results'] = results
        context['voucher_code_list'] = get_voucher_code_list(sqs)
        context['simple_query'] = get_simple_query(request)
        context['url_encoded_query'] = get_correct_url_query(request.GET.urlencode())
        context['result_count'] = len(sqs)
        return render(request, 'public_interface/search_results.html', context)
    else:
        sqs = Vouchers.objects.filter(
            Q(genus__icontains=query) | Q(species__icontains=query) | Q(code__icontains=query),
        )
        context["result_count"] = len(sqs)
        context["page"] = {'object_list': sqs}
        return render(request, 'public_interface/search_results.html', context)
Exemplo n.º 28
0
def full_search(request):
    """全局搜索"""
    keywords = request.GET['q']
    form = SearchForm(request.GET)
    articles = form.search()

    try:
        page = request.GET.get('page', 1)
    except PageNotAnInteger:
        page = 1

    p = Paginator(articles, 1, request=request)
    articles = p.page(page)
    return render(request,
                  'home/article_search_list.html',
                  context={
                      'articles': articles,
                      'keywords': '关键字 \'{}\' 搜索结果'.format(keywords)
                  })
Exemplo n.º 29
0
def search(request):
    """Simple search tool"""
    if 'q' not in request.GET:
        return redirect('/')

    query = request.GET['q'].strip()
    if query == '':
        return redirect('/')

    form = SearchForm(request.GET)
    sqs = form.search()
    sqs.spelling_suggestion()

    search_view = VoSeqSearchView(
        template='public_interface/search_results.html',
        searchqueryset=sqs,
        form_class=SearchForm,
        url_encoded_query=request.GET.urlencode(),
    )
    search_view.__call__(request)
    return search_view.create_response()
Exemplo n.º 30
0
def search_helper(request, searchqueryset, pagination_function):
    """
    Description: Helper function by searching
                 Based off haystack.views.basic_search()
                   
    Arguments:   - request:             HttpRequest object
                 - searchqueryset:      SearchQuerySet limited to a model by
                                        calling SearchQuerySet().models()
                 - pagination_function: Helper function for use in paginating
                                        the search results
    Return:      Dictionary with keys coming from pagination_function. Two
                 New keys will be added to it:
                 - query:      search query
                 - suggestion: backend-suggested search query
    
    Author:      Nnoduka Eruchalu
    """
    query = ''
    results = EmptySearchQuerySet()
    suggestion = False
    search_list = []

    if request.GET.get('q'):
        form = SearchForm(request.GET,
                          searchqueryset=searchqueryset,
                          load_all=True)
        if form.is_valid():
            query = form.cleaned_data['q']
            results = form.search()
            # for odd reasons there are duplicates in the haystack results...
            search_list = list_dedup([r.object for r in results])

        if results.query.backend.include_spelling:
            suggestion = form.get_suggestion()

    context = pagination_function(request, search_list)
    context['query'] = query
    context['suggestion'] = suggestion
    return context
Exemplo n.º 31
0
def search_helper(request, searchqueryset, pagination_function):
    """
    Description: Helper function by searching
                 Based off haystack.views.basic_search()
                   
    Arguments:   - request:             HttpRequest object
                 - searchqueryset:      SearchQuerySet limited to a model by
                                        calling SearchQuerySet().models()
                 - pagination_function: Helper function for use in paginating
                                        the search results
    Return:      Dictionary with keys coming from pagination_function. Two
                 New keys will be added to it:
                 - query:      search query
                 - suggestion: backend-suggested search query
    
    Author:      Nnoduka Eruchalu
    """
    query = ''
    results = EmptySearchQuerySet()
    suggestion = False
    search_list = []
    
    if request.GET.get('q'):
        form = SearchForm(request.GET, searchqueryset=searchqueryset,
                          load_all=True)
        if form.is_valid():
            query = form.cleaned_data['q']
            results = form.search()
            # for odd reasons there are duplicates in the haystack results...
            search_list = list_dedup([r.object for r in results])
                                    
        if results.query.backend.include_spelling:
            suggestion = form.get_suggestion()
                        
    context = pagination_function(request, search_list)
    context['query'] = query
    context['suggestion'] = suggestion
    return context
Exemplo n.º 32
0
 def find_keywords(cls, text):
     whoosh_backend = SearchForm().searchqueryset.query.backend
     if not whoosh_backend.setup_complete:
         whoosh_backend.setup()
     with whoosh_backend.index.searcher() as searcher:
         keywords = searcher.key_terms_from_text("text",
                                                 text,
                                                 numterms=10,
                                                 normalize=False)
     keywords = list(zip(*keywords))[0] if keywords else []
     keywords = [
         cls._find_representative(keyword, text) for keyword in keywords
     ]
     keywords = [
         keyword for keyword in keywords if cls._is_good_keyword(keyword)
     ]
     # no double keywords in list
     keywords = list(set(keywords))
     # no punctuation in suggested keywords
     keywords = [
         "".join(c for c in s if c not in string.punctuation)
         for s in keywords
     ]
     return keywords
Exemplo n.º 33
0
def search_all(request):
    rs = request.GET.get('q', False)
    form = SearchForm(request.GET)
    searchResult = form.search()
    # print(searchResult.query)
    # for i in posts:
    #     print(i.object.title)
    paginator = Paginator(searchResult, 6)
    page = request.GET.get('page')
    try:
        posts = paginator.page(page)
    except PageNotAnInteger:
        posts = paginator.page(1)
    except EmptyPage:
        posts = paginator.page(paginator.num_pages)
    studyNotes = studyNote.objects.all()
    ckeditorBlogs = ckeditorBlog.objects.all()
    return render(
        request, 'search/search_result.html', {
            'posts': posts,
            'rs': rs,
            'studyNotes': studyNotes,
            'ckeditorBlogs': ckeditorBlogs
        })
Exemplo n.º 34
0
def newsearchView(request):
    if request.user.is_authenticated:
        user = request.user
    else:
        user = get_user(request)
    username = request.user.username
    searchForm = SearchForm()
    if request.method == 'GET':
        keyword = request.GET['q']
        all_result = SearchQuerySet().filter(content=AutoQuery(keyword))
        content = {
            'searchResult': all_result,
            'curruser': user,
            'msgcount': getmsgcount(username),
            'searchform': searchForm,
            'query': keyword
        }
    else:
        content = {
            'curruser': user,
            'msgcount': getmsgcount(username),
            'searchform': searchForm
        }
    return render(request, 'myblog/newsearch.html', content)
Exemplo n.º 35
0
 def test_form_suggestion(self):
     form = SearchForm({'q': 'exampl'})
     self.assertEqual(form.get_suggestion(), 'example')
Exemplo n.º 36
0
def search(request):
    """ Returns messages corresponding to a query """
    mlist_fqdn = request.GET.get("mlist")
    if mlist_fqdn is None:
        mlist = None
    else:
        try:
            mlist = MailingList.objects.get(name=mlist_fqdn)
        except MailingList.DoesNotExist:
            raise Http404("No archived mailing-list by that name.")
        if not is_mlist_authorized(request, mlist):
            return render(request, "hyperkitty/errors/private.html", {
                            "mlist": mlist,
                          }, status=403)


    query = ''
    results = EmptySearchQuerySet()
    sqs = RelatedSearchQuerySet()

    # Remove private non-subscribed lists
    if mlist is not None:
        sqs = sqs.filter(mailinglist__exact=mlist.name)
    else:
        excluded_mlists = MailingList.objects.filter(
            archive_policy=ArchivePolicy.private.value)
        if request.user.is_authenticated():
            subscriptions = request.user.hyperkitty_profile.get_subscriptions()
            excluded_mlists = excluded_mlists.exclude(
                list_id__in=subscriptions.keys())
        excluded_mlists = excluded_mlists.values_list("name", flat=True)
        sqs = sqs.exclude(mailinglist__in=excluded_mlists)

    # Sorting
    sort_mode = request.GET.get('sort')
    if sort_mode == "date-asc":
        sqs = sqs.order_by("date")
    elif sort_mode == "date-desc":
        sqs = sqs.order_by("-date")

    # Handle data
    if request.GET.get('q'):
        form = SearchForm(
            request.GET, searchqueryset=sqs, load_all=True)
        if form.is_valid():
            query = form.cleaned_data['q']
            results = form.search()
    else:
        form = SearchForm(searchqueryset=sqs, load_all=True)

    emails = paginate(results, page_num=request.GET.get('page'))
    for email in emails:
        if request.user.is_authenticated():
            email.object.myvote = email.object.votes.filter(user=request.user).first()
        else:
            email.object.myvote = None


    context = {
        'mlist' : mlist,
        'form': form,
        'emails': emails,
        'query': query,
        'sort_mode': sort_mode,
        'suggestion': None,
    }
    if results.query.backend.include_spelling:
        context['suggestion'] = form.get_suggestion()

    return render(request, "hyperkitty/search_results.html", context)
Exemplo n.º 37
0
Arquivo: views.py Projeto: xfsysu/cms
def full_search(request):
    sform = SearchForm(request.GET)
    members = sform.search()
    return render(request, 'union/full_search.html', {'members': members})
Exemplo n.º 38
0
def search(request):
    """ Returns messages corresponding to a query """
    mlist_fqdn = request.GET.get("mlist")
    if mlist_fqdn is None:
        mlist = None
    else:
        try:
            mlist = MailingList.objects.get(name=mlist_fqdn)
        except MailingList.DoesNotExist:
            raise Http404("No archived mailing-list by that name.")
        if not is_mlist_authorized(request, mlist):
            return render(request,
                          "hyperkitty/errors/private.html", {
                              "mlist": mlist,
                          },
                          status=403)
    query = ''
    results = EmptySearchQuerySet()
    sqs = RelatedSearchQuerySet()

    # Remove private non-subscribed lists
    if mlist is not None:
        sqs = sqs.filter(mailinglist__exact=mlist.name)
    else:
        excluded_mlists = MailingList.objects.filter(
            archive_policy=ArchivePolicy.private.value)
        if request.user.is_authenticated:
            subscriptions = get_subscriptions(request.user)
            excluded_mlists = excluded_mlists.exclude(
                list_id__in=subscriptions.keys())
        excluded_mlists = excluded_mlists.values_list("name", flat=True)
        sqs = sqs.exclude(mailinglist__in=excluded_mlists)

    # Sorting
    sort_mode = request.GET.get('sort')
    if sort_mode == "date-asc":
        sqs = sqs.order_by("date")
    elif sort_mode == "date-desc":
        sqs = sqs.order_by("-date")

    # Handle data
    if request.GET.get('q'):
        form = SearchForm(request.GET, searchqueryset=sqs, load_all=True)
        if form.is_valid():
            query = form.cleaned_data['q']
            results = form.search()
    else:
        form = SearchForm(searchqueryset=sqs, load_all=True)

    try:
        emails = paginate(
            results,
            request.GET.get('page'),
            request.GET.get('count'),
        )
    except Exception as e:
        backend = settings.HAYSTACK_CONNECTIONS[DEFAULT_ALIAS]["ENGINE"]
        if backend == "haystack.backends.whoosh_backend.WhooshEngine":
            from whoosh.qparser.common import QueryParserError
            search_exception = QueryParserError
        if backend == "xapian_backend.XapianEngine":
            from xapian import QueryParserError
            search_exception = QueryParserError
        if not isinstance(e, search_exception):
            raise
        emails = paginate([])
        form.add_error(
            "q",
            ValidationError(
                _('Parsing error: %(error)s'),
                params={"error": e},
                code="parse",
            ))
    for email in emails:
        if request.user.is_authenticated:
            email.object.myvote = email.object.votes.filter(
                user=request.user).first()
        else:
            email.object.myvote = None

    context = {
        'mlist': mlist,
        'form': form,
        'emails': emails,
        'query': query,
        'sort_mode': sort_mode,
        'suggestion': None,
    }
    if results.query.backend.include_spelling:
        context['suggestion'] = form.get_suggestion()

    return render(request, "hyperkitty/search_results.html", context)
Exemplo n.º 39
0
 def test_form_suggestion(self):
     form = SearchForm({"q": "exampl"}, searchqueryset=SearchQuerySet("whoosh"))
     self.assertEqual(form.get_suggestion(), "example")
Exemplo n.º 40
0
 def __getattribute__(self, name):
     if name.startswith('sort_link_'):
         return self.sort_link(name.replace('sort_link_', ''))
     else:
         # Default behaviour
         return SearchForm.__getattribute__(self, name)
Exemplo n.º 41
0
 def test_form_suggestion(self):
     form = SearchForm({'q': 'exampl'}, searchqueryset=SearchQuerySet('whoosh'))
     self.assertEqual(form.get_suggestion(), 'example')
Exemplo n.º 42
0
def search(request):
    """
    Description: Handles requests from site's search bar
                 Based off haystack.views.basic_search()
                   
    Arguments:   request: HttpRequest object
    Return:      HttpResponse object showing search results with following 
                 additional details
                 - query:      search query
                 - suggestion: backend-suggested search query
    
    Author:      Nnoduka Eruchalu
    """
    query = ""
    results = EmptySearchQuerySet()
    suggestion = False

    if request.GET.get("q"):
        form = SearchForm(request.GET, searchqueryset=None, load_all=True)
        if form.is_valid():
            query = form.cleaned_data["q"]
            results = form.search()

        if results.query.backend.include_spelling:
            suggestion = form.get_suggestion()

    search_list = [r.object for r in results]

    paginator = Paginator(search_list, settings.RESULTS_PER_PAGE)

    page = request.GET.get("page")
    try:
        results = paginator.page(page)
    except PageNotAnInteger:
        # if page is not an integer, deliver first page.
        results = paginator.page(1)
    except EmptyPage:
        # if page is out of range (e.g. 999), deliver last page of results
        results = paginator.page(paginator.num_pages)

    if results.has_next():
        next_page_num = results.next_page_number()
    else:
        next_page_num = 0  # way of indicating no more pages... 1 index'd helped!

    if results.has_previous():
        prev_page_num = results.previous_page_number()
    else:
        prev_page_num = 0

    results = results.object_list

    return render_to_response(
        "search/search.html",
        {
            "query": query,
            "suggestion": suggestion,
            "results": results,
            "next_page": next_page_num,
            "prev_page": prev_page_num,
        },
        context_instance=RequestContext(request),
    )
Exemplo n.º 43
0
 def test_form_suggestion(self):
     form = SearchForm({"q": "exampl"},
                       searchqueryset=SearchQuerySet("whoosh"))
     self.assertEqual(form.get_suggestion(), "example")
Exemplo n.º 44
0
def get_haystack_results(request):
    hs_form = SearchForm(request.GET)
    if hs_form.is_valid():
        return hs_form.search()
    return []
Exemplo n.º 45
0
def Search(request):
    form = SearchForm(request.GET)
    results = form.search()
    return render_to_response('search/search.html', {'results': results})
Exemplo n.º 46
0
def images_search(request):
    """
    View to make search of images.

    :param request: Request to serve
    """

    query = ''
    time_start = ''
    time_end = ''
    post = request.POST
    enable_checkboxes = False

    if request.method == 'GET' and request.GET.get('q') is not None:
        request.method = 'POST'
        enable_checkboxes = True
        post = {'q': request.GET['q'],
                'time_start': request.GET.get('time_start', ''),
                'time_end': request.GET.get('time_end', '')}

    if request.method == 'POST':

        # Check if session have to be deleted
        if post.get('clear_form'):
            request.session.flush()
            pass

        # New search, clear data stored in session
        request.session['results_images'] = None
        form = SearchForm(post)
        restart = post.get('restart') is not None

        if form.is_valid():
            images = []
            categories_to_search = []
            query = form.cleaned_data['q'] if not restart else ''

            # Get categories to search and get left menu data
            for i in ImageCategory.objects.filter(visible_on_website=True):
                category_images = {}
                category_images["label_name"] = i.label
                category_images["label_code"] = i.value
                category_images["images"] = []
                search_set = SearchQuerySet().models(Image).filter(category_label__exact=i.label,
                                                                   ready_to_go=True).order_by('date')
                category_images["number_of_images"] = len(search_set)
                if restart or enable_checkboxes or post.get("checkbox" + str(i.value)):
                    categories_to_search.append(i.label)

                images.append(category_images)

            images = sorted(images, key=lambda k: k["label_name"])

            time_start = post.get('time_start') if not restart else ''
            time_end = post.get('time_end') if not restart else ''

            # Options if query is provided
            if query != "":
                if time_start != "" and time_end != "":
                    results = \
                        SearchQuerySet().filter(imgtext__icontains=query, ready_to_go=True,
                                                category_label__in=categories_to_search,
                                                date__gte=time_start,
                                                date__lte=time_end).models(Image).\
                            order_by('date')

                elif time_start != "":
                    results = \
                        SearchQuerySet().filter(imgtext__icontains=query, ready_to_go=True,
                                                category_label__in=categories_to_search,
                                                date__gte=time_start).models(Image).\
                            order_by('date')

                elif time_end != "":
                    results = \
                        SearchQuerySet().filter(imgtext__icontains=query, ready_to_go=True,
                                                category_label__in=categories_to_search,
                                                date__lte=time_end).models(Image).\
                            order_by('date')

                else:
                    results = \
                        SearchQuerySet().filter(imgtext__icontains=query, ready_to_go=True,
                                                category_label__in=categories_to_search).models(Image).\
                            order_by('date')

            elif time_start != "" or time_end != "":
                if time_start != "" and time_end != "":
                    results = \
                        SearchQuerySet().filter(ready_to_go=True,
                                                category_label__in=categories_to_search,
                                                date__gte=time_start,
                                                date__lte=time_end).models(Image).\
                            order_by('date')

                elif time_start != "":
                    results = \
                        SearchQuerySet().filter(ready_to_go=True,
                                                category_label__in=categories_to_search,
                                                date__gte=time_start).models(Image).\
                            order_by('date')

                elif time_end != "":
                    results = \
                        SearchQuerySet().filter(ready_to_go=True,
                                                category_label__in=categories_to_search,
                                                date__lte=time_end).models(Image).\
                            order_by('date')

                else:
                    if len(categories_to_search) == 1:
                        return HttpResponseRedirect(reverse('resources:images-category',
                                                        kwargs={'category': categories_to_search.pop()}))
                    else:
                        results = SearchQuerySet().all().filter(ready_to_go=True,
                                                            category_label__in=categories_to_search).\
                            order_by('date')

            else:
                if len(categories_to_search) > 1:
                    results = SearchQuerySet().all().filter(ready_to_go=True,
                                                            category_label__in=categories_to_search).\
                            order_by('date')
                else:
                    return HttpResponseRedirect(reverse('resources:images-category',
                                                        kwargs={'category': categories_to_search.pop()}))

        else:
            results = SearchQuerySet().model(Image).all()

        # Store results in session
        request.session['results_images'] = results
        request.session['images_images'] = images
        request.session['enabled_categories'] = categories_to_search
        request.session['query'] = query
        request.session['time_start'] = time_start
        request.session['time_end'] = time_end

    else:
        results = request.session.get('results_images')
        images = request.session.get('images_images')

    return render(request, 'resources/images-search-results.html',
            {'results': results,
             'images': images,
             'query': request.session['query'],
             'time_start': request.session['time_start'],
             'time_end': request.session['time_end'],
             'enabled_categories': request.session['enabled_categories']})
Exemplo n.º 47
0
 def __init__(self, *args, **kwargs):
     SearchForm.__init__(self, *args, **kwargs)
Exemplo n.º 48
0
 def test_form_suggestion(self):
     form = SearchForm({'q': 'exampl'},
                       searchqueryset=SearchQuerySet('whoosh'))
     self.assertEqual(form.get_suggestion(), 'example')
Exemplo n.º 49
0
 def test_form_suggestion(self):
     form = SearchForm({'q': 'exampl'})
     self.assertEqual(form.get_suggestion(), '')
Exemplo n.º 50
0
def full_search(request):
    sform = SearchForm(request.GET)
    return render(request, 'search/s.html', {'posts': posts, 'form': sform})
Exemplo n.º 51
0
    def extra_context(self):
        context = super(blogSearchView, self).extra_context()
        searchform = SearchForm()
        context['searchform'] = searchform

        return context
def notes(request):
    form = SearchForm(request.GET)
    notes = form.search()
    return render_to_response('notes.html', {'notes': notes})