From eaa3cf7205424c08251e94df6a87e1b584575f4f Mon Sep 17 00:00:00 2001 From: Ivlev Denis Date: Tue, 30 Jan 2018 19:08:08 +0300 Subject: [PATCH] LIL-139. Add Serch view --- apps/course/views.py | 25 +++++++++++++++++++++++++ project/urls.py | 6 +++++- 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/apps/course/views.py b/apps/course/views.py index c29a025b..38d3f921 100644 --- a/apps/course/views.py +++ b/apps/course/views.py @@ -1,4 +1,5 @@ from django.contrib.auth.decorators import login_required +from django.db.models import Q from django.http import JsonResponse from django.template import loader, Context, Template from django.views.generic import View, CreateView, DetailView, ListView @@ -136,3 +137,27 @@ class LessonView(DetailView): model = Lesson context_object_name = 'lesson' template_name = 'course/lesson.html' + + +class SearchView(CoursesView): + template_name = 'course/result.html' + + def get_queryset(self): + search_query = self.request.GET.get('q', None) + queryset = super().get_queryset() + if search_query: + query = Q(title__icontains=search_query) | Q(short_description__icontains=search_query) + queryset = queryset.filter(query) + else: + queryset = queryset.none() + return queryset + + def get_context_data(self): + context = super().get_context_data() + context['q'] = self.request.GET.get('q', None) or '' + return context + + def get_template_names(self): + if self.request.is_ajax(): + return 'course/course_items.html' + return 'course/result.html' diff --git a/project/urls.py b/project/urls.py index 0822252b..519a20ca 100644 --- a/project/urls.py +++ b/project/urls.py @@ -18,7 +18,10 @@ from django.urls import path, include from django.views.generic import TemplateView from django.conf import settings -from apps.course.views import CoursesView, likes, coursecomment, CourseView, LessonView +from apps.course.views import ( + CoursesView, likes, coursecomment, + CourseView, LessonView, SearchView, +) urlpatterns = [ path('admin/', admin.site.urls), @@ -28,6 +31,7 @@ urlpatterns = [ path('course//like', likes, name='likes'), path('course//comment', coursecomment, name='coursecomment'), path('lesson//', LessonView.as_view(), name='lesson'), + path('search/', SearchView.as_view(), name='search'), path('', TemplateView.as_view(template_name="templates/lilcity/main.html"), name='index'), ]