1
0
mirror of https://github.com/Microsoft/sql-server-samples.git synced 2025-12-08 14:58:54 +00:00
Files
sql-server-samples/samples/development-frameworks/django/bootcamp/search/views.py
2016-11-08 13:10:49 -08:00

53 lines
1.9 KiB
Python

from django.shortcuts import render, redirect
from django.db.models import Q
from django.contrib.auth.models import User
from bootcamp.feeds.models import Feed
from bootcamp.articles.models import Article
from bootcamp.questions.models import Question
from django.contrib.auth.decorators import login_required
@login_required
def search(request):
if 'q' in request.GET:
querystring = request.GET.get('q').strip()
if len(querystring) == 0:
return redirect('/search/')
try:
search_type = request.GET.get('type')
if search_type not in ['feed', 'articles', 'questions', 'users']:
search_type = 'feed'
except Exception, e:
search_type = 'feed'
count = {}
results = {}
results['feed'] = Feed.objects.filter(post__icontains=querystring,
parent=None)
results['articles'] = Article.objects.filter(
Q(title__icontains=querystring) | Q(content__icontains=querystring)
)
results['questions'] = Question.objects.filter(
Q(title__icontains=querystring) | Q(
description__icontains=querystring))
results['users'] = User.objects.filter(
Q(username__icontains=querystring) | Q(
first_name__icontains=querystring) | Q(
last_name__icontains=querystring))
count['feed'] = results['feed'].count()
count['articles'] = results['articles'].count()
count['questions'] = results['questions'].count()
count['users'] = results['users'].count()
return render(request, 'search/results.html', {
'hide_search': True,
'querystring': querystring,
'active': search_type,
'count': count,
'results': results[search_type],
})
else:
return render(request, 'search/search.html', {'hide_search': True})