Skip to content
Snippets Groups Projects
Verified Commit 4cb8a079 authored by Tom Teichler's avatar Tom Teichler :beers:
Browse files

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

parent 20f501cb
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']
}
]
},
......
{# -*- 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 %}
<h3>{% blocktrans %}Edit school information{% endblocktrans%}</h3>
<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>
<h3>{% blocktrans %}Edit school term{% endblocktrans%}</h3>
<form method="post" enctype="multipart/form-data">
{% csrf_token %}
{% bootstrap_form edit_term_form %}
<button type="submit" class="btn btn-secondary">
{% blocktrans %}Edit{% endblocktrans %}
</button>
</form>
{% endblock %}
......@@ -10,6 +10,7 @@ from . import views
urlpatterns = [
path('data_management/', views.data_management, name='data_management'),
path('status/', views.system_status, name='system_status'),
path('school/edit', views.edit_school, name='edit_school'),
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,37 @@ 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
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_school.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