Merge remote-tracking branch 'origin/dev' into dev

remotes/origin/hasaccess
Vitaly Baev 8 years ago
commit ad35d4644b
  1. 4
      .gitignore
  2. 36
      apps/course/templates/course/result.html
  3. 25
      apps/course/views.py
  4. 6
      project/urls.py
  5. 10
      web/build/css/app.css
  6. 2
      web/build/css/app.css.map
  7. 19
      web/src/sass/_common.sass
  8. 6326
      web/yarn.lock

4
.gitignore vendored

@ -53,7 +53,7 @@ coverage.xml
# Django stuff:
*.log
.static_storage/
.media/
media/*
local_settings.py
/static
@ -111,4 +111,4 @@ venv.bak/
.map
node_modules
db.sqlite3
.vscode
.vscode

@ -0,0 +1,36 @@
{% extends "templates/lilcity/index.html" %}
{% load static %}
{% block title %}Результаты поиска - {{ block.super }}{% endblock title %}
{% block content %}
<div class="main main_sm" style="background-image: url({% static 'img/bg-1.jpg' %});">
<div class="main__center center">
<div class="main__title">Результаты поиска</div>
</div>
</div>
<div class="section">
<div class="section__center center">
<div class="searching">
<input class="searching__input" type="text" placeholder="Поиск" value="{{ q }}">
<button class="searching__btn btn">Найти</button>
</div>
<div class="head"></div>
<div class="layout">
<div class="layout__search">
<div class="courses courses_three">
{% if course_items %}
<div class="courses__list">
{% include "./course_items.html" %}
</div>
<div class="courses__load load">
<button class="load__btn btn">Подгрузить еще</button>
</div>
{% else %}
<div class="empty">К сожалению, по вашему запросу ничего не&nbsp;найдено.</div>
{% endif %}
</div>
</div>
</div>
</div>
</div>
{% endblock content %}

@ -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'

@ -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/<int:course_id>/like', likes, name='likes'),
path('course/<int:course_id>/comment', coursecomment, name='coursecomment'),
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'),
]

@ -865,6 +865,8 @@ a.grey-link:hover { color: #000; border-bottom: 1px #545454 solid; }
.layout__container { -ms-flex: 0 0 66.66%; flex: 0 0 66.66%; }
.layout__search { -ms-flex: 0 0 100%; flex: 0 0 100%; }
.layout__sidebar { -ms-flex: 0 0 33.33%; flex: 0 0 33.33%; }
.similar__item { display: -ms-flexbox; display: flex; margin-bottom: 30px; color: #191919; }
@ -1369,6 +1371,14 @@ a.grey-link:hover { color: #000; border-bottom: 1px #545454 solid; }
.form__common-error { margin-top: 15px; font-size: 14px; background: #FF9393; color: #fff; padding: 10px; display: none; }
.searching { display: -ms-flexbox; display: flex; margin-bottom: 40px; }
.searching__input { height: 40px; padding: 0 10px; border: 1px solid #E6E6E6; border-radius: 3px 0 0 3px; font-size: 18px; transition: border-color .2s; -ms-flex: 0 0 calc(100% - 100px); flex: 0 0 calc(100% - 100px); }
.searching__input:focus { border-color: #191919; }
.searching__btn { border-radius: 0 3px 3px 0; -ms-flex: 0 0 100px; flex: 0 0 100px; }
@media only screen and (max-width: 1023px) {
body { font-size: 14px; line-height: 1.57; }

File diff suppressed because one or more lines are too long

@ -2069,6 +2069,8 @@ a.grey-link
flex: 0 0 66.66%
+t
margin-bottom: 40px
&__search
flex: 0 0 100%
&__sidebar
flex: 0 0 33.33%
@ -3165,7 +3167,22 @@ a.grey-link
+m
display: none
.searching
display: flex
margin-bottom: 40px
&__input
height: 40px
padding: 0 10px
border: 1px solid $border
border-radius: 3px 0 0 3px
font-size: 18px
transition: border-color .2s
&:focus
border-color: $cl
flex: 0 0 calc(100% - 100px)
&__btn
border-radius: 0 3px 3px 0
flex: 0 0 100px

File diff suppressed because it is too large Load Diff
Loading…
Cancel
Save