You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
34 lines
1.1 KiB
34 lines
1.1 KiB
8 years ago
|
# -*- coding: utf-8 -*-
|
||
|
from __future__ import unicode_literals
|
||
|
# Erik Stein <code@classlibrary.net>, 2017
|
||
|
|
||
|
|
||
|
from django.http import HttpResponsePermanentRedirect
|
||
|
from django.core.urlresolvers import reverse
|
||
|
from django.views.generic import ListView
|
||
|
|
||
|
from .models import Person
|
||
|
|
||
|
|
||
|
class PersonListView(ListView):
|
||
|
model = Person
|
||
|
template_name = 'person/person_list.html'
|
||
|
|
||
|
def get(self, request, *args, **kwargs):
|
||
|
if 'letter' not in kwargs:
|
||
|
return HttpResponsePermanentRedirect(reverse('person-list-letter', kwargs={'letter': 'a'}))
|
||
|
else:
|
||
|
return super(PersonListView, self).get(request, *args, **kwargs)
|
||
|
|
||
|
def get_queryset(self):
|
||
|
qs = super(PersonListView, self).get_queryset()
|
||
|
letter = self.kwargs.get('letter', 'a')
|
||
|
return qs.filter(sort_name__istartswith=letter)
|
||
|
|
||
|
def get_context_data(self, **kwargs):
|
||
|
context = super(PersonListView, self).get_context_data(**kwargs)
|
||
|
context['selected_letter'] = 'a'
|
||
|
context['alphabet'] = 'abcdefghijklmnopqrstuvwxyz'
|
||
|
return context
|
||
|
|