-
Jonathan Weth authoredJonathan Weth authored
views.py 1.90 KiB
from django.contrib import messages
from django.contrib.auth.decorators import login_required
from django.core.paginator import Paginator
from django.http import HttpRequest, HttpResponse
from django.shortcuts import render
from django.utils.translation import gettext as _
from aleksis.core.decorators import admin_required
from aleksis.core.models import Group
from .forms import UntisUploadForm, GroupSubjectFormset
from .util.xml.xml import untis_import_xml
@login_required
@admin_required
def xml_import(request: HttpRequest) -> HttpResponse:
context = {}
upload_form = UntisUploadForm()
if request.method == "POST":
upload_form = UntisUploadForm(request.POST, request.FILES)
if upload_form.is_valid():
untis_import_xml(request, request.FILES["untis_xml"])
context["upload_form"] = upload_form
return render(request, "untis/xml_import.html", context)
# FIXME: Rule must check if setting is enabled
@admin_required
def groups_subjects(request: HttpRequest) -> HttpResponse:
""" Assign subjects to groups (for matching by MySQL importer) """
context = {}
groups_qs = Group.objects.all()
# Paginate
paginator = Paginator(groups_qs, 100)
page_number = request.GET.get("page")
page = paginator.get_page(page_number)
groups_paged = groups_qs.filter(id__in=[g.id for g in page])
# Create filtered queryset
group_subject_formset = GroupSubjectFormset(
request.POST or None, queryset=groups_paged
)
# Check if form is submitted and valid, then save
if request.method == "POST":
if group_subject_formset.is_valid():
group_subject_formset.save()
messages.success(request, _("Your changes were successfully saved."))
context["formset"] = group_subject_formset
context["page"] = page
context["paginator"] = paginator
return render(request, "untis/groups_subjects.html", context)