]> git.0d.be Git - django-panik-combo.git/blob - panikombo/views.py
add introduction to fullwidth page placeholders
[django-panik-combo.git] / panikombo / views.py
1 from django.contrib.auth.decorators import login_required
2 from django.db.models import Q
3 from django.http import JsonResponse
4 from emissions.models import Episode, SoundFile
5
6
7 @login_required
8 def soundfiles(request, *args, **kwargs):
9     terms = kwargs.get('term', request.GET.get('term', ''))
10     queryset = SoundFile.objects.all()
11     for term in terms.split():
12         queryset = queryset.filter(podcastable=True).filter(
13             Q(title__icontains=term)
14             | Q(episode__title__icontains=term)
15             | Q(episode__emission__title__icontains=term)
16         )
17
18     def fmt(soundfile):
19         return '%s - %s - %s' % (
20             soundfile.episode.emission.title,
21             soundfile.episode.title,
22             soundfile.title or soundfile.id,
23         )
24
25     return JsonResponse(
26         {
27             'results': [
28                 {
29                     'text': fmt(x),
30                     'id': x.pk,
31                 }
32                 for x in queryset
33             ],
34             'more': False,
35         }
36     )
37
38
39 @login_required
40 def episodes(request, *args, **kwargs):
41     terms = kwargs.get('term', request.GET.get('term', ''))
42     queryset = Episode.objects.all()
43     for term in terms.split():
44         queryset = queryset.filter(Q(title__icontains=term) | Q(emission__title__icontains=term))
45
46     def fmt(episode):
47         return '%s - %s' % (episode.emission.title, episode.title)
48
49     return JsonResponse(
50         {
51             'results': [
52                 {
53                     'text': fmt(x),
54                     'id': x.pk,
55                 }
56                 for x in queryset
57             ],
58             'more': False,
59         }
60     )