From d62d7af295eee3391a6257bcb8621c75578361d4 Mon Sep 17 00:00:00 2001 From: Felipe Martin Date: Fri, 4 Apr 2014 15:48:08 +0200 Subject: [PATCH] New alphabetic listing --- shelfzilla/apps/manga/views/series.py | 27 +++++++++++++- .../bootflat/templates/manga/series/list.html | 37 +++++++++++++++---- 2 files changed, 55 insertions(+), 9 deletions(-) diff --git a/shelfzilla/apps/manga/views/series.py b/shelfzilla/apps/manga/views/series.py index c7fb541..c5234ea 100644 --- a/shelfzilla/apps/manga/views/series.py +++ b/shelfzilla/apps/manga/views/series.py @@ -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' diff --git a/shelfzilla/themes/bootflat/templates/manga/series/list.html b/shelfzilla/themes/bootflat/templates/manga/series/list.html index 8f6f3eb..3c04d59 100644 --- a/shelfzilla/themes/bootflat/templates/manga/series/list.html +++ b/shelfzilla/themes/bootflat/templates/manga/series/list.html @@ -8,22 +8,22 @@
- {% for letter in letter_list %} + {% if current_letter != 'all' %}
-

{{ letter.grouper }}

+

{{ current_letter }}

    - {% for item in letter.list %} + {% for item in items %}
  • {% if item.slug %} {{ item.name }} @@ -31,10 +31,33 @@ {{ item.name }} {% endif %}
  • + {% empty %} +
  • {% trans "No results" %}
  • {% endfor %}
- {% endfor %} + {% else %} + {% for letter in letter_list %} +
+
+

{{ letter.grouper }}

+
+
    + {% for item in letter.list %} +
  • + {% if item.slug %} + {{ item.name }} + {% else %} + {{ item.name }} + {% endif %} +
  • + {% empty %} +
  • {% trans "No results" %}
  • + {% endfor %} +
+
+ {% endfor %} + {% endif %}
{% endblock %}