fmartingr
/
shelfzilla
Archived
1
0
Fork 0

Added basic search for series. Tap #19

This commit is contained in:
Felipe Martin 2014-05-27 20:36:21 +02:00
parent c9dd5842b3
commit c356129982
5 changed files with 76 additions and 7 deletions

View File

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

View File

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

View File

@ -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 %}

View File

@ -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 %}

View File

@ -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)),