90 lines
No EOL
3.1 KiB
Python
90 lines
No EOL
3.1 KiB
Python
from django.shortcuts import render, get_object_or_404, redirect
|
|
from django.contrib import messages
|
|
from .models import PublicBody, Party, Member, Question, Vote
|
|
|
|
|
|
def home(request):
|
|
return render(request, "index.html", {})
|
|
|
|
|
|
def public_bodies(request):
|
|
items = PublicBody.objects.all()
|
|
return render(request, "council/public_bodies.html", {"items": items})
|
|
|
|
|
|
def public_body_detail(request, slug: str):
|
|
body = get_object_or_404(PublicBody, slug=slug)
|
|
members = body.members.select_related("party").all()
|
|
parties = Party.objects.filter(members__public_body=body).distinct()
|
|
votes = body.votes.all()
|
|
return render(
|
|
request,
|
|
"council/public_body_detail.html",
|
|
{"body": body, "members": members, "parties": parties, "votes": votes},
|
|
)
|
|
|
|
|
|
def members(request):
|
|
items = Member.objects.select_related("public_body", "party").all()
|
|
return render(request, "council/members.html", {"items": items})
|
|
|
|
|
|
def member_detail(request, pk: int):
|
|
member = get_object_or_404(Member.objects.select_related("public_body", "party"), pk=pk)
|
|
questions = member.questions.all()
|
|
votes = member.votes.select_related("public_body").all()
|
|
return render(
|
|
request,
|
|
"council/member_detail.html",
|
|
{"member": member, "questions": questions, "votes": votes},
|
|
)
|
|
|
|
|
|
def ask_question(request, pk: int):
|
|
member = get_object_or_404(Member, pk=pk)
|
|
if request.method != "POST":
|
|
return redirect("member_detail", pk=member.pk)
|
|
|
|
title = request.POST.get("title", "").strip()
|
|
asker_first_name = request.POST.get("asker_first_name", "").strip()
|
|
asker_last_name = request.POST.get("asker_last_name", "").strip()
|
|
asker_city = request.POST.get("asker_city", "").strip()
|
|
asker_email = request.POST.get("asker_email", "").strip()
|
|
|
|
if not title or not asker_first_name or not asker_last_name or not asker_city or not asker_email:
|
|
messages.error(request, "Bitte alle Pflichtfelder ausfüllen.")
|
|
return redirect("member_detail", pk=member.pk)
|
|
|
|
Question.objects.create(
|
|
title=title,
|
|
body=title,
|
|
member=member,
|
|
asker_first_name=asker_first_name,
|
|
asker_last_name=asker_last_name,
|
|
asker_city=asker_city,
|
|
asker_email=asker_email,
|
|
)
|
|
messages.success(request, "Frage wurde eingereicht.")
|
|
return redirect("member_detail", pk=member.pk)
|
|
|
|
|
|
def parties(request):
|
|
items = Party.objects.all()
|
|
return render(request, "council/parties.html", {"items": items})
|
|
|
|
|
|
def party_detail(request, pk: int):
|
|
party = get_object_or_404(Party, pk=pk)
|
|
members = party.members.select_related("public_body").all()
|
|
public_bodies = PublicBody.objects.filter(members__party=party).distinct()
|
|
questions = Question.objects.filter(member__party=party).select_related("member").all()
|
|
return render(
|
|
request,
|
|
"council/party_detail.html",
|
|
{"party": party, "members": members, "public_bodies": public_bodies, "questions": questions},
|
|
)
|
|
|
|
|
|
def questions(request):
|
|
items = Question.objects.select_related("member").all()
|
|
return render(request, "council/questions.html", {"items": items}) |