Skip to content
Snippets Groups Projects
Commit 59ec3cc6 authored by Nik | Klampfradler's avatar Nik | Klampfradler
Browse files

Merge branch '19-provide-information-on-school' into 'master'

Add way to edit information about school and school term. Closes #19.

Closes #19

See merge request Teckids/BiscuIT/BiscuIT-ng!50
parents 40191c4e 15727601
No related branches found
No related tags found
1 merge request!50Add way to edit information about school and school term. Closes #19.
......@@ -2,7 +2,7 @@ from django import forms
from django.contrib.auth import get_user_model
from django.utils.translation import ugettext_lazy as _
from .models import Person, Group
from .models import Person, Group, School, SchoolTerm
class PersonAccountForm(forms.ModelForm):
......@@ -72,3 +72,15 @@ class EditGroupForm(forms.ModelForm):
class Meta:
model = Group
fields = ['name', 'short_name', 'members', 'owners', 'parent_groups']
class EditSchoolForm(forms.ModelForm):
class Meta:
model = School
fields = ['name', 'name_official', 'logo', 'logo_cropping']
class EditTermForm(forms.ModelForm):
class Meta:
model = SchoolTerm
fields = ['caption', 'date_start', 'date_end']
......@@ -43,6 +43,11 @@ MENUS = {
'name': _('Impersonation'),
'url': 'impersonate-list',
'validators': ['menu_generator.validators.is_authenticated', 'menu_generator.validators.is_superuser']
},
{
'name': _('Manage school'),
'url': 'manage_school',
'validators': ['menu_generator.validators.is_authenticated', 'menu_generator.validators.is_superuser']
}
]
},
......@@ -97,5 +102,15 @@ MENUS = {
}
],
'DATA_MANAGEMENT_MENU': [
]
],
'SCHOOL_MANAGEMENT_MENU': [
{
'name': _('Edit school information'),
'url': 'edit_school_information',
},
{
'name': _('Edit school term'),
'url': 'edit_school_term',
}
],
}
{# -*- engine:django -*- #}
{% extends "core/base.html" %}
{% load bootstrap4 i18n %}
{% block bootstrap4_title %}{% blocktrans %}Edit school{% endblocktrans %} - {{ block.super}}{% endblock %}
{% block page_title %}{% blocktrans %}Edit school{% endblocktrans %}{% endblock %}
{% block bootstrap4_extra_head %}
{{ block.super }}
{{ edit_school_form.media }}
{% endblock %}
{% block content %}
<form method="post" enctype="multipart/form-data">
{% csrf_token %}
{% bootstrap_form edit_school_form %}
<button type="submit" class="btn btn-secondary">
{% blocktrans %}Edit{% endblocktrans %}
</button>
</form>
{% endblock %}
{# -*- engine:django -*- #}
{% extends "core/base.html" %}
{% load bootstrap4 i18n %}
{% block bootstrap4_title %}{% blocktrans %}Edit school term{% endblocktrans %} - {{ block.super}}{% endblock %}
{% block page_title %}{% blocktrans %}Edit school term{% endblocktrans %}{% endblock %}
{% block bootstrap4_extra_head %}
{{ block.super }}
{{ edit_school_form.media }}
{% endblock %}
{% block content %}
<form method="post">
{% csrf_token %}
{% bootstrap_form edit_term_form %}
<button type="submit" class="btn btn-secondary">
{% blocktrans %}Edit{% endblocktrans %}
</button>
</form>
{% endblock %}
{# -*- engine:django -*- #}
{% extends "core/base.html" %}
{% load bootstrap4 i18n menu_generator %}
{% block bootstrap4_title %}{% blocktrans %}School management{% endblocktrans %} - {{ block.super }}{% endblock %}
{% block page_title %}{% blocktrans %}School management{% endblocktrans %}{% endblock %}
{% block content %}
{% get_menu "SCHOOL_MANAGEMENT_MENU" as school_menu %}
<ul>
{% for item in school_menu %}
{% if item.submenu %}
<li><a href="{{ item.url }}">{{ item.name }}</a></li>
<ul>
{% for menu in item.submenu %}
<li><a href="{{ menu.url }}">{{ menu.name }}</a></li>
{% endfor %}
</ul>
{% else %}
<li><a href="{{ item.url }}">{{ item.name }}</a></li>
{% endif %}
{% endfor %}
</ul>
{% endblock %}
......@@ -10,6 +10,9 @@ from . import views
urlpatterns = [
path('data_management/', views.data_management, name='data_management'),
path('status/', views.system_status, name='system_status'),
path('school_management', views.edit_school, name='manage_school'),
path('school/information/edit', views.edit_school, name='edit_school_information'),
path('school/term/edit', views.edit_schoolterm, name='edit_school_term'),
path('accounts/', include('django.contrib.auth.urls')),
path('persons', views.persons, name='persons'),
path('persons/accounts', views.persons_accounts, name='persons_accounts'),
......
import requests
from typing import Callable, Optional
from django.contrib.auth.decorators import login_required
......@@ -9,7 +10,7 @@ from django.utils.translation import ugettext_lazy as _
from django_cron.models import CronJobLog
from .decorators import admin_required
from .forms import PersonsAccountsFormSet, EditPersonForm, EditGroupForm
from .forms import PersonsAccountsFormSet, EditPersonForm, EditGroupForm, EditSchoolForm, EditTermForm
from .models import Person, Group
from .tables import PersonsTable, GroupsTable
from .util import messages
......@@ -186,3 +187,41 @@ def system_status(request: HttpRequest) -> HttpResponse:
).order_by('-end_time')[:10]
return render(request, 'core/system_status.html', context)
@admin_required
def edit_school(request: HttpRequest) -> HttpResponse:
context = {}
school = request.user.person.school
edit_school_form = EditSchoolForm(request.POST or None, request.FILES or None, instance=school)
context['school'] = school
if request.method == 'POST':
if edit_school_form.is_valid():
edit_school_form.save(commit=True)
messages.success(request, _('The school has been saved.'))
return redirect('index')
context['edit_school_form'] = edit_school_form
return render(request, 'core/edit_school.html', context)
@admin_required
def edit_schoolterm(request: HttpRequest) -> HttpResponse:
context = {}
term = request.user.person.school.current_term
edit_term_form = EditTermForm(request.POST or None, instance=term)
if request.method == 'POST':
if edit_term_form.is_valid():
edit_term_form.save(commit=True)
messages.success(request, _('The term has been saved.'))
return redirect('index')
context['edit_term_form'] = edit_term_form
return render(request, 'core/edit_schoolterm.html', context)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment