1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
|
from django.views.generic.detail import DetailView
from django.views.generic import ListView
from django.contrib.auth.models import User
from django.utils import timezone
from utils.views import PaginatedListView,LuxDetailView
from .models import AP, Sighting, FieldNote
from django.db.models import Subquery
class SightingListView(PaginatedListView):
model = Sighting
def get_queryset(self):
qs_ids = Sighting.objects.order_by('ap__id', '-pub_date').distinct('ap').values_list('id', flat=True)
return Sighting.objects.filter(id__in=qs_ids).order_by('-pub_date').prefetch_related('ap')
def get_context_data(self, **kwargs):
context = super(SightingListView, self).get_context_data(**kwargs)
context['breadcrumbs'] = ['dialogues',]
return context
class LifeListView(ListView):
template_name = 'sightings/life-list.html'
def get_queryset(self):
return Sighting.objects.filter(ap__apclass__kind=1).order_by('ap__id').distinct('ap')
def get_context_data(self, **kwargs):
context = super(LifeListView, self).get_context_data(**kwargs)
context['breadcrumbs'] = ['dialogues',]
return context
class NotLifeListView(ListView):
template_name = 'sightings/not_life_list.html'
def get_queryset(self):
return AP.objects.filter(apclass__kind=1).filter(have_seen=False)
def get_context_data(self, **kwargs):
context = super(NotLifeListView, self).get_context_data(**kwargs)
context['breadcrumbs'] = ['dialogues',]
return context
class YearListView(ListView):
template_name = 'sightings/year-list.html'
def get_queryset(self):
qs = Sighting.objects.filter(
pk__in=Subquery(
Sighting.objects.filter(ap__apclass__kind=1).filter(pub_date__year=self.kwargs['year']).order_by('ap_id').distinct('ap').values('pk')
)
).order_by('-pub_date')
return qs #Sighting.objects.filter(ap__apclass__kind=1).filter(pub_date__year=self.kwargs['year']).order_by('ap__id','pub_date').distinct('ap')
def get_context_data(self, **kwargs):
# Call the base implementation first to get a context
context = super(YearListView, self).get_context_data(**kwargs)
context['year'] = timezone.now().year
return context
class SightingListUserView(PaginatedListView):
template_name = 'archives/sightings.html'
def get_queryset(self):
return Sighting.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(SightingListUserView, self).get_context_data(**kwargs)
context['user'] = User.objects.get(username=self.kwargs['user'])
return context
class SightingDetailView(LuxDetailView):
model = AP
def get_context_data(self, **kwargs):
# Call the base implementation first to get a context
context = super(SightingDetailView, self).get_context_data(**kwargs)
context['field_notes'] = FieldNote.objects.filter(
sighting__ap__slug=self.kwargs['slug']
)
context['sighting'] = Sighting.objects.filter(
ap__slug=self.kwargs['slug']
).prefetch_related('location')
return context
|