startpage: flexibilize root section

pull/73/head
Christian Merten 1 year ago
parent 2c49c216dc
commit 3eaaf1727c
Signed by: christian.merten
GPG Key ID: D953D69721B948B3

@ -47,3 +47,6 @@ REGISTRATION_FORM_DOWNLOAD_LINK = 'https://nc.cloud-jdav-hd.de'
DOMAIN = 'jdav-hd.merten.dev'
STARTPAGE_REDIRECT_URL = 'https://jdav-hd.de'
ROOT_SECTION = 'jdav_heidelberg'
RECENT_SECTION = 'aktuelles'
REPORTS_SECTION = 'berichte'

@ -0,0 +1,18 @@
# Generated by Django 4.0.1 on 2024-11-23 17:00
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('startpage', '0001_initial'),
]
operations = [
migrations.AddField(
model_name='section',
name='show_in_navigation',
field=models.BooleanField(default=True, verbose_name='Show in navigation'),
),
]

@ -0,0 +1,19 @@
# Generated by Django 4.0.1 on 2024-11-23 17:41
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('startpage', '0002_section_show_in_navigation'),
]
operations = [
migrations.AlterField(
model_name='post',
name='section',
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='startpage.section', verbose_name='section'),
),
]

@ -17,6 +17,7 @@ class Section(models.Model):
title = models.CharField(verbose_name=_('Title'), max_length=50)
urlname = models.CharField(verbose_name=_('URL'), max_length=25)
website_text = MarkdownxField(verbose_name=_('website text'), default='', blank=True)
show_in_navigation = models.BooleanField(verbose_name=_('Show in navigation'), default=True)
class Meta:
verbose_name = _('Section')
@ -43,7 +44,7 @@ class Post(models.Model):
groups = models.ManyToManyField(Group, verbose_name=_('Groups'), blank=True)
detailed = models.BooleanField(verbose_name=_('detailed'), default=False)
section = models.ForeignKey(Section, verbose_name=_('section'), on_delete=models.SET_NULL, null=True, blank=True)
section = models.ForeignKey(Section, verbose_name=_('section'), on_delete=models.CASCADE, null=True, blank=False)
def __str__(self):
"""String represenation"""

@ -0,0 +1,21 @@
{% extends "startpage/base_subsite.html" %}
{% load static %}
{% load markdownify %}
{% load markdown_extras %}
{% block content %}
<h1>Berichte</h1>
{% for post in posts %}
<div class="post-preview">
<a href="{% url 'startpage:post' post_name=post.urlname section_name='berichte' %}"><h3>{{ post.title }}</h3></a>
<p>
{{ post.website_text|markdownify|truncatechars:200 }}
<a href="{% url 'startpage:post' post_name=post.urlname section_name='berichte' %}">weiterlesen</a>
</p>
</div>
{% endfor %}
{% endblock %}

@ -55,15 +55,21 @@ window.onclick = function(event) {
<div class="menu-level-2">
<ul>
<li>
<a href="{% url 'startpage:jugendleiterinnen' %}">Unsere Jugendleiter:innen</a>
<a href="{% url 'startpage:aktuelles' %}">Aktuelles</a>
</li>
<li>
<a href="{% url 'startpage:aktuelles' %}">Aktuelles</a>
<a href="{% url 'startpage:berichte' %}">Berichte</a>
</li>
{% for post in root_section.post_set.all %}
<li>
<a href="{% url 'startpage:post' post_name=post.urlname section_name=root_section.urlname %}">{{ post.title }}</a>
</li>
{% endfor %}
</ul>
</div>
</li>
{% for section in sections %}
{% if section.show_in_navigation %}
<li>
<a href="{% url 'startpage:section' section_name=section.urlname %}">{{ section.title }}</a>
<div class="menu-level-2">
@ -76,6 +82,7 @@ window.onclick = function(event) {
</ul>
</div>
</li>
{% endif %}
{% endfor %}
<li>
<a href="{% url 'startpage:gruppen' %}">Gruppen</a>

@ -7,7 +7,7 @@ urlpatterns = [
re_path(r'^$', views.index, name='index'),
re_path(r'^impressum/?$', views.static_view('startpage/impressum.html'), name='impressum'),
re_path(r'^aktuelles/?$', views.aktuelles, name='aktuelles'),
re_path(r'^jugendleiterinnen/?$', views.jugendleiterinnen, name='jugendleiterinnen'),
re_path(r'^berichte/?$', views.berichte, name='berichte'),
re_path(r'^gruppen/?$', views.static_view('startpage/gruppen.html'), name='gruppen'),
re_path(r'^gruppen/faq/?$', views.static_view('startpage/gruppen/faq.html'), name='faq'),
re_path(r'^gruppen/(?P<group_name>[\w\-:]+)/?$', views.gruppe_detail, name='gruppe_detail'),

@ -13,6 +13,10 @@ from .models import Post, Section
def render(request, template_path, context={}):
context['groups'] = Group.objects.filter(show_website=True)
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)
@ -30,15 +34,6 @@ def static_view(template_path):
return view
def jugendleiterinnen(request):
group = get_object_or_404(Group, name='Jugendleiter')
people = group.member_set.all()
context = {
'people': people
}
return render(request, 'startpage/jugendleiterinnen.html', context)
def gruppe_detail(request, group_name):
try:
group = Group.objects.get(name=group_name)
@ -55,17 +50,24 @@ def gruppe_detail(request, group_name):
def aktuelles(request):
posts = Post.objects.filter(section=None)
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):
if section_name == 'aktuelles':
section = None
else:
section = get_object_or_404(Section, urlname=section_name)
post = get_object_or_404(Post, section=section, urlname=post_name)
context = {
@ -78,6 +80,7 @@ def post(request, section_name, post_name):
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,

Loading…
Cancel
Save