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 ...@@ -2,7 +2,7 @@ from django import forms
from django.contrib.auth import get_user_model from django.contrib.auth import get_user_model
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ugettext_lazy as _
from .models import Person, Group from .models import Person, Group, School, SchoolTerm
class PersonAccountForm(forms.ModelForm): class PersonAccountForm(forms.ModelForm):
...@@ -72,3 +72,15 @@ class EditGroupForm(forms.ModelForm): ...@@ -72,3 +72,15 @@ class EditGroupForm(forms.ModelForm):
class Meta: class Meta:
model = Group model = Group
fields = ['name', 'short_name', 'members', 'owners', 'parent_groups'] 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 = { ...@@ -43,6 +43,11 @@ MENUS = {
'name': _('Impersonation'), 'name': _('Impersonation'),
'url': 'impersonate-list', 'url': 'impersonate-list',
'validators': ['menu_generator.validators.is_authenticated', 'menu_generator.validators.is_superuser'] '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 ...@@ -10,6 +10,7 @@ from . import views
urlpatterns = [ urlpatterns = [
path('data_management/', views.data_management, name='data_management'), path('data_management/', views.data_management, name='data_management'),
path('status/', views.system_status, name='system_status'), 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('accounts/', include('django.contrib.auth.urls')),
path('persons', views.persons, name='persons'), path('persons', views.persons, name='persons'),
path('persons/accounts', views.persons_accounts, name='persons_accounts'), path('persons/accounts', views.persons_accounts, name='persons_accounts'),
......
import requests
from typing import Callable, Optional from typing import Callable, Optional
from django.contrib.auth.decorators import login_required from django.contrib.auth.decorators import login_required
...@@ -9,7 +10,7 @@ from django.utils.translation import ugettext_lazy as _ ...@@ -9,7 +10,7 @@ from django.utils.translation import ugettext_lazy as _
from django_cron.models import CronJobLog from django_cron.models import CronJobLog
from .decorators import admin_required 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 .models import Person, Group
from .tables import PersonsTable, GroupsTable from .tables import PersonsTable, GroupsTable
from .util import messages from .util import messages
...@@ -186,3 +187,37 @@ def system_status(request: HttpRequest) -> HttpResponse: ...@@ -186,3 +187,37 @@ def system_status(request: HttpRequest) -> HttpResponse:
).order_by('-end_time')[:10] ).order_by('-end_time')[:10]
return render(request, 'core/system_status.html', context) 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.
Please register or to comment