1 # -*- coding: utf-8 -*-
2 # This file is part of Wolnelektury, licensed under GNU Affero GPLv3 or later.
3 # Copyright © Fundacja Nowoczesna Polska. See NOTICE for more information.
5 from dictionary.models import Note, Qualifier
6 from django.views.generic.list import ListView
7 from django.db.models import Count, Q
10 class NotesView(ListView):
11 def get_queryset(self):
12 objects = Note.objects.select_related('book').all()
16 self.qualifier = Qualifier.objects.get(qualifier=self.request.GET.get('qual'))
17 except Qualifier.DoesNotExist:
20 filters['qualifier'] = Q(qualifiers=self.qualifier)
22 self.language = self.request.GET.get('lang')
24 filters['language'] = Q(language=self.language)
26 self.fn_type = self.request.GET.get('type')
28 filters['fn_type'] = Q(fn_type=self.fn_type)
30 self.letter = self.request.GET.get('ltr')
31 if self.letter == "0-9":
32 objects = objects.filter(sort_key__regex=r"^[0-9]")
33 #filters['letter'] = Q(sort_key__regex=r"^[0-9]")
35 objects = objects.filter(sort_key__startswith=self.letter)
36 #filters['letter'] = Q(sort_key__startswith=self.letter)
38 self.letters = ["0-9"] + [chr(a) for a in range(ord('a'), ord('z')+1)]
41 for key, fltr in filters.items():
42 if key != 'qualifier':
43 nobj = nobj.filter(fltr)
44 self.qualifiers = Qualifier.objects.filter(note__in=nobj).distinct()
47 for key, fltr in filters.items():
49 nobj = nobj.filter(fltr)
50 self.languages = nobj.order_by('language').values_list(
51 'language', flat=True).distinct()
54 for key, fltr in filters.items():
56 nobj = nobj.filter(fltr)
57 self.fn_types = nobj.order_by('fn_type').values_list(
58 'fn_type', flat=True).distinct()
60 for f in filters.values():
61 objects = objects.filter(f)
65 def get_context_data(self, **kwargs):
66 context = super(NotesView, self).get_context_data(**kwargs)
67 context['letters'] = self.letters
68 context['letter'] = self.letter
69 context['qualifiers'] = self.qualifiers
70 context['qualifier'] = self.qualifier
71 context['languages'] = self.languages
72 context['language'] = self.language
73 context['fn_types'] = self.fn_types
74 context['fn_type'] = self.fn_type