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 ...@@ -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']
} }
] ]
}, },
...@@ -97,5 +102,15 @@ MENUS = { ...@@ -97,5 +102,15 @@ MENUS = {
} }
], ],
'DATA_MANAGEMENT_MENU': [ '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 ...@@ -10,6 +10,9 @@ 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_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('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,41 @@ def system_status(request: HttpRequest) -> HttpResponse: ...@@ -186,3 +187,41 @@ 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
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