コード例 #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
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))
コード例 #4
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))
コード例 #5
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)
コード例 #6
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)
コード例 #7
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")
コード例 #8
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))
コード例 #9
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")
コード例 #10
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)
コード例 #11
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)
コード例 #12
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)
コード例 #13
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
	)
コード例 #14
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)
コード例 #15
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)
コード例 #16
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!")
コード例 #17
0
ファイル: lapack_le.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(lapack_le_driver, lapack_le_computational).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(
				'lighthouse/lapack_le/keywordResult.html', 
				{'KeywordTab': True}, 
				context_instance=RequestContext(request, context)
			)
		else:
			HttpResponse("Error!")
コード例 #18
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)