コード例 #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
    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)
コード例 #3
0
ファイル: views.py プロジェクト: bopopescu/bw
def homepage(request):
    #index 1
    recent_articles = Articles.objects.raw(
        "SELECT A.article_id,A.article_title, A.article_description,A.article_summary,C.category_id, C.category_name, AI.image_url, AI.photopath FROM articles A  LEFT JOIN article_category AC ON A.article_id = AC.article_id  LEFT JOIN channel_category C ON C.category_id = AC.category_id  JOIN article_images AI ON AI.article_id = A.article_id  WHERE A.display_to_homepage = '1' AND AI.photopath !='' GROUP BY A.article_id ORDER BY A.article_published_date DESC LIMIT 21"
    )
    recent_articles_rightsidebar = Articles.objects.raw(
        "SELECT A.*, AU.*, AI.image_url, AI.photopath, AV.video_embed_code FROM articles A LEFT JOIN article_author A_A ON A.article_id = A_A.article_id LEFT JOIN author AU ON A_A.author_id = AU.author_id JOIN article_images AI ON AI.article_id = A.article_id LEFT JOIN article_video AV ON A.article_id = AV.article_id WHERE A.display_to_homepage = '1' AND AI.photopath !='' GROUP BY A.article_id ORDER BY A.article_published_date DESC LIMIT 8"
    )
    recent_important_article = Articles.objects.raw(
        "SELECT A.article_id,A.article_title, A.article_description,A.article_summary, AU.*, AI.image_url, AI.photopath FROM articles A LEFT JOIN article_author A_A ON A.article_id = A_A.article_id LEFT JOIN author AU ON A_A.author_id = AU.author_id LEFT JOIN article_images AI ON A.article_id = AI.article_id WHERE A.display_to_homepage = '1'  AND A.important_article = 1 AND AI.photopath !='' GROUP BY A.article_id ORDER BY A.article_published_date DESC LIMIT 1"
    )

    bwtv_articles = VideoMaster.objects.raw(
        "SELECT * FROM video_master ORDER BY video_id DESC LIMIT 7")
    form = ModelSearchForm(searchqueryset=None, load_all=True)

    from django.db import connection

    connection.close()

    return render(
        request, 'homepage/onepage_index.html', {
            'recent_articles': recent_articles,
            'current_date_n_time': datetime.datetime.now(),
            'bwtv_articles': bwtv_articles,
            'recent_important_article': recent_important_article,
            'form': form,
        })
コード例 #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 プロジェクト: kanika901/lighthouse
def post(request, ptype, pk):
    """Display a post form."""
    action = reverse("%s" % ptype, args=[pk])
    if ptype == "new_thread":
        title = "Start New Topic"
        subject = ''
        form = ThreadForm()
    elif ptype == "reply":
        title = "Reply to " + "\""+ Thread.objects.get(pk=pk).title + "\""
        subject = "Re: " + Thread.objects.get(pk=pk).title
        form = PostForm(initial={'title': subject})
    return render_to_response("forum/post.html", add_csrf(request, subject=subject,
        action=action, title=title, form=form, searchForm= ModelSearchForm()))
コード例 #6
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
    })
コード例 #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 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)
コード例 #9
0
ファイル: views.py プロジェクト: kanika901/lighthouse
def post(request, pk):
    """Single post with comments and a comment form."""
    """post below gets the title of the post. note: Post.objects.get()"""
    post = Post.objects.get(pk=int(pk))
    comments = Comment.objects.filter(title=post)
    d = {
        "post": post,
        "user": request.user,
        "months": mkmonth_lst(),
        "comments": comments,
        "form": CommentForm(),
        "searchForm": ModelSearchForm()
    }
    d.update(csrf(request))
    return render_to_response("blog/post.html", d)
コード例 #10
0
ファイル: views.py プロジェクト: kanika901/lighthouse
def MySearchView(request):
    modelList = []
    if request.method == 'GET':  # If the form has been submitted...
        form = ModelSearchForm(request.GET)  # A form bound to the GET data
        if form.is_valid():  # All validation rules pass
            answer = form.cleaned_data['models']
            if answer == []:
                sqs = SearchQuerySet().models(Post, Comment)
            else:
                for model_name in answer:
                    # Turen a string into a class and create a list of model classes for sqs
                    ct = ContentType.objects.get(
                        model=model_name.split(".")[1])
                    modelList.append(ct.model_class())
                sqs = SearchQuerySet().models(*modelList)
            search_view = MyHaystackSearchView(
                template="blog/blog_search.html", searchqueryset=sqs)
            return search_view(request, "hello")
コード例 #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
ファイル: views.py プロジェクト: kanika901/lighthouse
def thread(request, pk):
    """Listing of posts in a thread. The first post is always the thread post."""
    thread = Post.objects.filter(thread=pk).order_by("created")[0]
    posts = Post.objects.filter(thread=pk).order_by("created")[1:]
    posts = mk_paginator(request, posts, 15)
    title = Thread.objects.get(pk=pk).title
    
    """creates the paginator with 2 items per page."""
    #paginator = Paginator(posts, 3)
    #
    #try: page = int(request.GET.get("page", '1'))
    #except ValueError: page = 1
    #
    #try:
    #    posts = paginator.page(page)
    #except (InvalidPage, EmptyPage):
    #    posts = paginator.page(paginator.num_pages)
        
    return render_to_response("forum/thread.html", add_csrf(request, thread=thread, posts=posts, pk=pk,
        title=title, searchForm= ModelSearchForm()))
コード例 #13
0
ファイル: views.py プロジェクト: kanika901/lighthouse
def main(request):
    """Main listing."""
    """The list of posts is ordered by created time in reverse order."""
    posts = Post.objects.all().order_by("-created")
    """creates the paginator with 2 items per page."""
    paginator = Paginator(posts, 3)

    try:
        page = int(request.GET.get("page", '1'))
    except ValueError:
        page = 1

    try:
        posts = paginator.page(page)
    except (InvalidPage, EmptyPage):
        posts = paginator.page(paginator.num_pages)

    d = {
        "posts": posts,
        "user": request.user,
        "months": mkmonth_lst(),
        "searchForm": ModelSearchForm()
    }
    return render_to_response("blog/list.html", d)
コード例 #14
0
ファイル: views.py プロジェクト: kanika901/lighthouse
def forum(request, pk):
    """Listing of threads in a forum."""
    threads = Thread.objects.filter(forum=pk).order_by("-created")
    threads = mk_paginator(request, threads, 20)
    return render_to_response("forum/forum.html", add_csrf(request, threads=threads, pk=pk, searchForm= ModelSearchForm()))
コード例 #15
0
ファイル: views.py プロジェクト: kanika901/lighthouse
def main(request):
    """Main listing."""
    forums = Forum.objects.all()
    d = {"forums": forums, "user": request.user, "searchForm": ModelSearchForm()}
    return render_to_response("forum/list.html", d)
コード例 #16
0
ファイル: views.py プロジェクト: kanika901/lighthouse
def MyForumSearchView(request):
    form = ModelSearchForm(request.GET) # A form bound to the GET data
    if form.is_valid(): # All validation rules pass
        sqs = SearchQuerySet().models(Post)
        search_view = SearchView(template = "forum/forum_search.html", searchqueryset=sqs)
        return search_view(request)
コード例 #17
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)
コード例 #18
0
ファイル: views.py プロジェクト: kanika901/lighthouse
 def extra_context(self):
     return {"months": mkmonth_lst(), "searchForm": ModelSearchForm()}
コード例 #19
0
ファイル: views.py プロジェクト: kanika901/lighthouse
def keywordResult(request):
    modelList = []
    answer = []
    keywords_dictionary = {}
    keywords_origList = []
    keywordsList = []
    keywords = ""

    try:
        request.session['selectedRoutines']
        request.session['scriptOutput']
        request.session['userScript']
    except (NameError, KeyError):
        request.session['selectedRoutines'] = []
        request.session['scriptOutput'] = ""
        request.session['userScript'] = ""

    if request.method == 'POST':
        form = ModelSearchForm(request.POST)
        #print form

        if form.is_valid():
            ## if driver/computational boxes are checked
            #answer_class = form.cleaned_data['models']

            ## get the keyword
            keywords_orig = request.POST['q']

            ## Don't split double-quoted words ##
            keywords_origList = shlex.split(keywords_orig)

            ## split all words ##
            keywords_singleList = keywords_orig.split()

            ## spell check ##
            for i, item in enumerate(keywords_singleList):
                keywords_singleList[i] = spell_check(item)

            ## make a string out of keywordsList ##
            keywords = " ".join(keywords_singleList)

            ## keywords goes through keyword_handler ##
            keywords = keyword_handler(keywords)
            #print keywords

            ## final keywordsList, Don't split double-quoted words
            keywordsList = shlex.split(keywords)

            ## find the words that are not corrected ##
            common = list(set(keywords_origList) & set(keywordsList))
            #print common

            ###***** make a dictionary for the keywords for django query *****###
            sumList = []
            for key in special_words:
                keywords_dictionary[key] = list(
                    set(keywordsList) & set(special_words[key]))
                sumList += keywords_dictionary[key]
            keywords_dictionary['other'] = list(
                set(keywordsList) - set(sumList))

            ## keep 'transpose' and 'conjugate transpose' only
            keywords_dictionary['other'] = list(
                set(['transpose', 'conjugate transpose'])
                & set(keywords_dictionary['other']))
            print keywords_dictionary

            if not any([
                    keywords_dictionary[i] == []
                    for i in ['table', 'matrixType']
            ]):
                print 'use django'
                keywords_dictionary = keyword_handler2(keywords_dictionary)
                keywords_dictionary = kwDictionary_set(keywords_dictionary)
                #print keywords_dictionary
                results = query_django(keywords_dictionary)
            else:
                print 'use haystack'
                results = SearchQuerySet().models(least).filter(
                    content=AutoQuery(keywords)).order_by('id')

            context = {
                'results': results,
                'keywordsList': keywordsList,
                'common': common,
                'selectedRoutines': request.session['selectedRoutines'],
                #'notSelectedRoutines': request.session['notSelectedRoutines'],
            }

            return render_to_response('orthg/keywordResult.html',
                                      {'KeywordTab': True},
                                      context_instance=RequestContext(
                                          request, context))
        else:
            HttpResponse("Error!")
コード例 #20
0
 def dispatch(self, request, *args, **kwargs):
     self.form = ModelSearchForm(request.GET)
     return super(JsonSearchView, self).dispatch(request, *args, **kwargs)