]> 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
5 from emissions.models import SoundFile, Episode
6
7
8 @login_required
9 def soundfiles(request, *args, **kwargs):
10     terms = kwargs.get('term', request.GET.get('term', ''))
11     queryset = SoundFile.objects.all()
12     for term in terms.split():
13         queryset = queryset.filter(podcastable=True).filter(
14             Q(title__icontains=term)
15             | Q(episode__title__icontains=term)
16             | Q(episode__emission__title__icontains=term)
17         )
18
19     def fmt(soundfile):
20         return '%s - %s - %s' % (
21             soundfile.episode.emission.title,
22             soundfile.episode.title,
23             soundfile.title or soundfile.id,
24         )
25
26     return JsonResponse(
27         {
28             'results': [
29                 {
30                     'text': fmt(x),
31                     'id': x.pk,
32                 }
33                 for x in queryset
34             ],
35             'more': False,
36         }
37     )
38
39
40 @login_required
41 def episodes(request, *args, **kwargs):
42     terms = kwargs.get('term', request.GET.get('term', ''))
43     queryset = Episode.objects.all()
44     for term in terms.split():
45         queryset = queryset.filter(Q(title__icontains=term) | Q(emission__title__icontains=term))
46
47     def fmt(episode):
48         return '%s - %s' % (episode.emission.title, episode.title)
49
50     return JsonResponse(
51         {
52             'results': [
53                 {
54                     'text': fmt(x),
55                     'id': x.pk,
56                 }
57                 for x in queryset
58             ],
59             'more': False,
60         }
61     )