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.shortcuts import render_to_response, get_object_or_404
|
||||
from django.utils.translation import ugettext as _
|
||||
|
||||
from shelfzilla.views import View
|
||||
from ..models import Series
|
||||
|
@ -11,15 +13,36 @@ class SeriesView(View):
|
|||
|
||||
class SeriesListView(SeriesView):
|
||||
template = 'manga/series/list.html'
|
||||
filters = ['other', 'all']
|
||||
|
||||
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 = {
|
||||
'items': items
|
||||
'items': items,
|
||||
'letters': letters,
|
||||
'current_letter': current_letter
|
||||
}
|
||||
ctx = RequestContext(request, self.get_context(context))
|
||||
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):
|
||||
template = 'manga/series/detail.html'
|
||||
|
|
|
@ -8,22 +8,22 @@
|
|||
<div class="container">
|
||||
<div class="pull-right">
|
||||
<ul class="pagination">
|
||||
{% for letter in letter_list %}
|
||||
<li>
|
||||
<a href="#{{ letter.grouper }}">{{ letter.grouper }}</a>
|
||||
{% for letter in letters %}
|
||||
<li {% if current_letter == letter %}class="active"{% endif %}>
|
||||
<a href="{% url 'series.list' %}?letter={{ letter }}" data-pjax pjax-nopush>{{ letter }}</a>
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</div>
|
||||
<div class="clearfix"></div>
|
||||
<div class="column-list">
|
||||
{% for letter in letter_list %}
|
||||
{% if current_letter != 'all' %}
|
||||
<div class="panel panel-default">
|
||||
<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>
|
||||
<ul class="list-group">
|
||||
{% for item in letter.list %}
|
||||
{% 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>
|
||||
|
@ -31,10 +31,33 @@
|
|||
<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 %}
|
||||
{% 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>
|
||||
{% endblock %}
|
||||
|
|
Reference in New Issue