New alphabetic listing
This commit is contained in:
parent
a12f419a47
commit
d62d7af295
|
@ -1,5 +1,7 @@
|
||||||
|
import string
|
||||||
from django.template import RequestContext
|
from django.template import RequestContext
|
||||||
from django.shortcuts import render_to_response, get_object_or_404
|
from django.shortcuts import render_to_response, get_object_or_404
|
||||||
|
from django.utils.translation import ugettext as _
|
||||||
|
|
||||||
from shelfzilla.views import View
|
from shelfzilla.views import View
|
||||||
from ..models import Series
|
from ..models import Series
|
||||||
|
@ -11,15 +13,36 @@ class SeriesView(View):
|
||||||
|
|
||||||
class SeriesListView(SeriesView):
|
class SeriesListView(SeriesView):
|
||||||
template = 'manga/series/list.html'
|
template = 'manga/series/list.html'
|
||||||
|
filters = ['other', 'all']
|
||||||
|
|
||||||
def get(self, request):
|
def get(self, request):
|
||||||
items = Series.objects.all()
|
letters = list(string.ascii_uppercase)
|
||||||
|
letters.append(_('other'))
|
||||||
|
letters.append(_('all'))
|
||||||
|
current_letter = request.GET.get('letter', 'A')
|
||||||
|
|
||||||
|
items = self.get_items(current_letter)
|
||||||
|
|
||||||
context = {
|
context = {
|
||||||
'items': items
|
'items': items,
|
||||||
|
'letters': letters,
|
||||||
|
'current_letter': current_letter
|
||||||
}
|
}
|
||||||
ctx = RequestContext(request, self.get_context(context))
|
ctx = RequestContext(request, self.get_context(context))
|
||||||
return render_to_response(self.template, context_instance=ctx)
|
return render_to_response(self.template, context_instance=ctx)
|
||||||
|
|
||||||
|
def get_items(self, letter):
|
||||||
|
result = Series.objects.all()
|
||||||
|
if len(letter) == 1:
|
||||||
|
result = Series.objects.filter(name__istartswith=letter)
|
||||||
|
elif letter == 'all':
|
||||||
|
result = Series.objects.all()
|
||||||
|
elif letter == 'other':
|
||||||
|
# result = Series.objects.filter(name__regex=r'')
|
||||||
|
result = []
|
||||||
|
|
||||||
|
return result
|
||||||
|
|
||||||
|
|
||||||
class SeriesDetailView(SeriesView):
|
class SeriesDetailView(SeriesView):
|
||||||
template = 'manga/series/detail.html'
|
template = 'manga/series/detail.html'
|
||||||
|
|
|
@ -8,22 +8,22 @@
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="pull-right">
|
<div class="pull-right">
|
||||||
<ul class="pagination">
|
<ul class="pagination">
|
||||||
{% for letter in letter_list %}
|
{% for letter in letters %}
|
||||||
<li>
|
<li {% if current_letter == letter %}class="active"{% endif %}>
|
||||||
<a href="#{{ letter.grouper }}">{{ letter.grouper }}</a>
|
<a href="{% url 'series.list' %}?letter={{ letter }}" data-pjax pjax-nopush>{{ letter }}</a>
|
||||||
</li>
|
</li>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
<div class="clearfix"></div>
|
<div class="clearfix"></div>
|
||||||
<div class="column-list">
|
<div class="column-list">
|
||||||
{% for letter in letter_list %}
|
{% if current_letter != 'all' %}
|
||||||
<div class="panel panel-default">
|
<div class="panel panel-default">
|
||||||
<div class="panel-heading">
|
<div class="panel-heading">
|
||||||
<h3 class="panel-title" id="{{ letter.grouper }}">{{ letter.grouper }}</h3>
|
<h3 class="panel-title" id="{{ current_letter }}">{{ current_letter }}</h3>
|
||||||
</div>
|
</div>
|
||||||
<ul class="list-group">
|
<ul class="list-group">
|
||||||
{% for item in letter.list %}
|
{% for item in items %}
|
||||||
<li class="list-group-item">
|
<li class="list-group-item">
|
||||||
{% if item.slug %}
|
{% if item.slug %}
|
||||||
<a href="{% url "series.detail" item.pk item.slug %}" data-pjax>{{ item.name }}</a>
|
<a href="{% url "series.detail" item.pk item.slug %}" data-pjax>{{ item.name }}</a>
|
||||||
|
@ -31,10 +31,33 @@
|
||||||
<a href="{% url "series.detail" item.pk %}" data-pjax>{{ item.name }}</a>
|
<a href="{% url "series.detail" item.pk %}" data-pjax>{{ item.name }}</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</li>
|
</li>
|
||||||
|
{% empty %}
|
||||||
|
<li class="list-group-item">{% trans "No results" %}</li>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
{% endfor %}
|
{% else %}
|
||||||
|
{% for letter in letter_list %}
|
||||||
|
<div class="panel panel-default">
|
||||||
|
<div class="panel-heading">
|
||||||
|
<h3 class="panel-title" id="{{ letter.grouper }}">{{ letter.grouper }}</h3>
|
||||||
|
</div>
|
||||||
|
<ul class="list-group">
|
||||||
|
{% for item in letter.list %}
|
||||||
|
<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>
|
||||||
|
{% endfor %}
|
||||||
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
Reference in New Issue