61 lines
1.7 KiB
Python
61 lines
1.7 KiB
Python
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
|
|
|
|
|
|
class SeriesView(View):
|
|
section = 'series'
|
|
|
|
|
|
class SeriesListView(SeriesView):
|
|
template = 'manga/series/list.html'
|
|
filters = ['other', 'all']
|
|
|
|
def get(self, request):
|
|
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,
|
|
'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.exclude(name__regex=r'^[a-zA-Z]')
|
|
|
|
return result
|
|
|
|
|
|
class SeriesDetailView(SeriesView):
|
|
template = 'manga/series/detail.html'
|
|
|
|
def get(self, request, sid, slug=None):
|
|
if slug:
|
|
item = get_object_or_404(Series, pk=sid, slug=slug)
|
|
else:
|
|
item = get_object_or_404(Series, pk=sid)
|
|
|
|
context = {
|
|
'item': item
|
|
}
|
|
|
|
ctx = RequestContext(request, self.get_context(context))
|
|
return render_to_response(self.template, context_instance=ctx)
|