from django.views.generic.detail import DetailView from django.contrib.auth.models import User from utils.views import PaginatedListView from birds.models import Bird, BirdAudio, BirdSighting class BirdListView(PaginatedListView): template_name = 'archives/birds.html' def get_queryset(self): return BirdSighting.objects.all() class BirdListUserView(PaginatedListView): template_name = 'archives/birds.html' def get_queryset(self): return BirdSighting.objects.filter( seen_by__username=self.kwargs['user'] ) def get_context_data(self, **kwargs): # Call the base implementation first to get a context context = super(BirdListUserView, self).get_context_data(**kwargs) context['user'] = User.objects.get(username=self.kwargs['user']) return context class BirdDetailView(DetailView): model = Bird template_name = "details/bird.html" slug_field = "slug" def get_context_data(self, **kwargs): # Call the base implementation first to get a context context = super(BirdDetailView, self).get_context_data(**kwargs) try: context['recording'] = BirdAudio.objects.get( bird__slug=self.kwargs['slug'] ) except BirdAudio.DoesNotExist: pass try: context['sighting'] = BirdSighting.objects.get( bird__slug=self.kwargs['slug'] ) except BirdSighting.DoesNotExist: pass return context