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.
 
 

33 lines
1.0 KiB

# -*- coding: utf-8 -*-
from __future__ import unicode_literals
# Erik Stein <code@classlibrary.net>, 2017
from django.http import HttpResponsePermanentRedirect
from django.urls 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