You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
kompass/jdav_web/startpage/views.py

109 lines
3.1 KiB
Python

from django import shortcuts
from django.conf import settings
from django.http import Http404
from django.shortcuts import get_object_or_404
from django.shortcuts import redirect as django_redirect
from members.models import Group
from .models import Post
from .models import Section
# render shortcut adding additional context variables, needed for navbar
def render(request, template_path, context={}):
context["groups"] = Group.objects.filter(show_website=True).order_by("name")
context["sections"] = Section.objects.all()
try:
context["root_section"] = Section.objects.get(urlname=settings.ROOT_SECTION)
except Section.DoesNotExist:
pass
return shortcuts.render(request, template_path, context)
def index(request):
context = {
"recent_posts": Post.objects.filter(section__urlname=settings.RECENT_SECTION).order_by(
"-date"
),
"reports": Post.objects.filter(section__urlname=settings.REPORTS_SECTION).order_by("-date"),
}
return render(request, "startpage/index.html", context)
def redirect(request):
return django_redirect(settings.STARTPAGE_REDIRECT_URL)
# static view factory
def static_view(template_path):
def view(request):
return render(request, template_path)
return view
def gruppe_detail(request, group_name):
try:
group = Group.objects.get(name=group_name)
except Group.DoesNotExist:
raise Http404
if not group.show_website:
raise Http404
context = {
"group": group,
"people": group.leiters.all(),
}
return render(request, "startpage/gruppen/detail.html", context)
def aktuelles(request):
section = get_object_or_404(Section, urlname=settings.RECENT_SECTION)
posts = Post.objects.filter(section=section)
context = {
"posts": posts,
}
return render(request, "startpage/aktuelles.html", context)
def berichte(request):
section = get_object_or_404(Section, urlname=settings.REPORTS_SECTION)
posts = Post.objects.filter(section=section)
context = {
"posts": posts,
}
return render(request, "startpage/berichte.html", context)
def post(request, section_name, post_name):
section = get_object_or_404(Section, urlname=section_name)
post = get_object_or_404(Post, section=section, urlname=post_name)
context = {
"post": post,
"section": section,
"people": [m for group in post.groups.all() for m in group.member_set.all()],
}
return render(request, "startpage/post.html", context)
def section(request, section_name):
assert section_name != "aktuelles"
assert section_name != "berichte"
section = get_object_or_404(Section, urlname=section_name)
context = {
"section": section,
}
return render(request, "startpage/section.html", context)
def handler404(request, exception):
response = render(request, "startpage/404.html")
response.status_code = 404
return response
def handler500(request):
response = render(request, "startpage/500.html")
response.status_code = 500
return response