bundesdata_web_app/app/speakers/views.py
2019-03-01 20:55:41 +01:00

59 lines
2.5 KiB
Python
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

from django.shortcuts import render
from django_tables2 import RequestConfig
from .models import Speaker, LegislativeInfo, LegislativeInstitution
from speeches.models import Speech
from .tables import SpeakerTable
from speeches.tables import SpeakerSpeechTable
from django.http import Http404
from watson import search as watson
from .forms import SearchForm
from speeches.forms import SearchFormSpeech
def speakers(request):
"""
This view creates the page for the searchable speakers list.
"""
if(request.method == "GET"):
form = SearchForm(request.GET)
if(form.is_valid()):
query = form.cleaned_data["query"]
search_results = watson.filter(Speaker, query)
table = SpeakerTable(search_results)
RequestConfig(request, paginate={'per_page': 20}).configure(table)
context = {"title": "Suchergebnisse für " + query,
"form": form, "table": table}
return render(request, "speakers/speakers.html", context)
else:
form = SearchForm()
table = SpeakerTable(Speaker.objects.all().order_by("last_name"))
RequestConfig(request, paginate={'per_page': 20}).configure(table)
context = {"title": "Suche", "table": table, "form": form}
return render(request, "speakers/speakers.html", context)
def speaker(request, id):
"""
This view creates the profile page of one speaker.
"""
try:
current_speaker = Speaker.objects.get(pk=id)
speech_count = len(Speech.objects.filter(foreign_speaker=id))
current_legislative_info = LegislativeInfo.objects.filter(foreign_speaker=id)
sorted_l_info = current_legislative_info.order_by("legislative_period")
institution_info = LegislativeInstitution.objects.filter(foreign_speaker=id)
sorted_i_info = institution_info.order_by("current_period")
table = SpeakerSpeechTable(Speech.objects.filter(foreign_speaker=id))
RequestConfig(request, paginate={'per_page': 20}).configure(table)
except Speaker.DoesNotExist:
raise Http404("Speaker does not exist")
context = {"title": ("MdB "
+ current_speaker.first_name
+ " " + current_speaker.last_name),
"current_speaker": current_speaker,
"sorted_l_info": sorted_l_info,
"sorted_i_info": sorted_i_info,
"speech_table": table,
"speech_count": speech_count}
return render(request, "speakers/speaker.html", context)