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