Added basic search for series. Tap #19
This commit is contained in:
parent
c9dd5842b3
commit
c356129982
|
@ -0,0 +1,8 @@
|
|||
from django.conf.urls import patterns, url
|
||||
|
||||
from ..views.search import SearchView
|
||||
|
||||
urlpatterns = patterns(
|
||||
'',
|
||||
url(r'^$', SearchView.as_view(), name='search'),
|
||||
)
|
|
@ -0,0 +1,36 @@
|
|||
from django.template import RequestContext
|
||||
from django import forms
|
||||
from django.utils.translation import ugettext as _
|
||||
from django.shortcuts import render_to_response, get_object_or_404
|
||||
|
||||
from shelfzilla.views import View
|
||||
from ..models import Series
|
||||
|
||||
|
||||
class SearchForm(forms.Form):
|
||||
q = forms.CharField(max_length=64, label=_('Search'),
|
||||
widget=forms.TextInput(
|
||||
attrs={'placeholder': _('Search')})
|
||||
)
|
||||
|
||||
|
||||
class SearchView(View):
|
||||
template = 'manga/search.html'
|
||||
section = 'search'
|
||||
|
||||
def post(self, request):
|
||||
search_query = ''
|
||||
items = []
|
||||
form = SearchForm(request.POST)
|
||||
|
||||
if form.is_valid():
|
||||
search_query = form.cleaned_data['q']
|
||||
|
||||
items = Series.objects.filter(name__icontains=search_query)
|
||||
|
||||
context = {
|
||||
'items': items,
|
||||
'search_query': search_query
|
||||
}
|
||||
ctx = RequestContext(request, self.get_context(context))
|
||||
return render_to_response(self.template, context_instance=ctx)
|
|
@ -1,11 +1,11 @@
|
|||
{% load i18n solo_tags %}
|
||||
{% load i18n solo_tags staticfiles %}
|
||||
{% get_solo 'config.SiteConfiguration' as site_config %}
|
||||
{% get_solo 'config.SocialConfiguration' as social_config %}
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link rel="stylesheet" href="{{ STATIC_URL }}/css/style.css" />
|
||||
<link rel="stylesheet" href="{% static "css/style.css" %}" />
|
||||
{% block extra_css %}{% endblock %}
|
||||
<title>{% block page_title %}ShelfZilla{% endblock %}</title>
|
||||
</head>
|
||||
|
@ -60,14 +60,13 @@
|
|||
</li>
|
||||
{% endif %}
|
||||
</ul>
|
||||
<!--
|
||||
<form class="navbar-form navbar-right" role="search">
|
||||
<form class="navbar-form navbar-right" role="search" method="post" action="{% url "search" %}">
|
||||
{% csrf_token %}
|
||||
<div class="form-search search-only">
|
||||
<i class="search-icon glyphicon glyphicon-search"></i>
|
||||
<input type="text" class="form-control search-query" placeholder="{% trans 'Search' %}">
|
||||
<input type="text" value="{{ search_query }}" name="q" class="form-control search-query" placeholder="{% trans 'Search' %}">
|
||||
</div>
|
||||
</form>
|
||||
-->
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
@ -82,7 +81,7 @@
|
|||
|
||||
{% block footer %}{% endblock %}
|
||||
|
||||
<script src="{{ STATIC_URL }}/js/site.js"></script>
|
||||
<script src="{% static "js/site.js" %}"></script>
|
||||
{% block extra_js %}{% endblock %}
|
||||
|
||||
{% if social_config.google_analytics %}
|
||||
|
|
|
@ -0,0 +1,25 @@
|
|||
{% extends '_layout.html'|pjax:request %}
|
||||
{% load i18n %}
|
||||
|
||||
{% block main_content %}
|
||||
<div class="container">
|
||||
<div class="panel panel-primary">
|
||||
<div class="panel-heading">
|
||||
<h3 class="panel-title">{% trans "Looking for..." %} "<strong>{{ search_query }}</strong>"</h3>
|
||||
</div>
|
||||
<ul class="list-group">
|
||||
{% for item in items %}
|
||||
<li class="list-group-item">
|
||||
{% if item.slug %}
|
||||
<a href="{% url "series.detail" item.pk item.slug %}" data-pjax>{{ item.name }}</a>
|
||||
{% else %}
|
||||
<a href="{% url "series.detail" item.pk %}" data-pjax>{{ item.name }}</a>
|
||||
{% endif %}
|
||||
</li>
|
||||
{% empty %}
|
||||
<li class="list-group-item">{% trans "No results" %}</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
|
@ -15,6 +15,7 @@ urlpatterns = patterns(
|
|||
url(r'^series/', include('shelfzilla.apps.manga.urls.series')),
|
||||
url(r'^volumes/', include('shelfzilla.apps.manga.urls.volumes')),
|
||||
url(r'^publishers/', include('shelfzilla.apps.manga.urls.publishers')),
|
||||
url(r'^search/', include('shelfzilla.apps.manga.urls.search')),
|
||||
url(r'^$', include('shelfzilla.apps.homepage.urls')),
|
||||
url(r'^_admin/', include('shelfzilla.apps._admin.urls')),
|
||||
url(r'^admin/', include(admin.site.urls)),
|
||||
|
|
Reference in New Issue