LIL-139. Add Serch view

remotes/origin/hasaccess
Ivlev Denis 8 years ago
parent c35915acdb
commit eaa3cf7205
  1. 25
      apps/course/views.py
  2. 6
      project/urls.py

@ -1,4 +1,5 @@
from django.contrib.auth.decorators import login_required from django.contrib.auth.decorators import login_required
from django.db.models import Q
from django.http import JsonResponse from django.http import JsonResponse
from django.template import loader, Context, Template from django.template import loader, Context, Template
from django.views.generic import View, CreateView, DetailView, ListView from django.views.generic import View, CreateView, DetailView, ListView
@ -136,3 +137,27 @@ class LessonView(DetailView):
model = Lesson model = Lesson
context_object_name = 'lesson' context_object_name = 'lesson'
template_name = 'course/lesson.html' 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'

@ -18,7 +18,10 @@ from django.urls import path, include
from django.views.generic import TemplateView from django.views.generic import TemplateView
from django.conf import settings 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 = [ urlpatterns = [
path('admin/', admin.site.urls), path('admin/', admin.site.urls),
@ -28,6 +31,7 @@ urlpatterns = [
path('course/<int:course_id>/like', likes, name='likes'), path('course/<int:course_id>/like', likes, name='likes'),
path('course/<int:course_id>/comment', coursecomment, name='coursecomment'), path('course/<int:course_id>/comment', coursecomment, name='coursecomment'),
path('lesson/<int:pk>/', LessonView.as_view(), name='lesson'), path('lesson/<int:pk>/', LessonView.as_view(), name='lesson'),
path('search/', SearchView.as_view(), name='search'),
path('', TemplateView.as_view(template_name="templates/lilcity/main.html"), name='index'), path('', TemplateView.as_view(template_name="templates/lilcity/main.html"), name='index'),
] ]

Loading…
Cancel
Save