66 lines
2.1 KiB
Python
66 lines
2.1 KiB
Python
from django.shortcuts import render
|
|
from .models import JsonParser
|
|
from pruefplan_parser.models import JsonParser
|
|
from django.shortcuts import render
|
|
from django.contrib.auth.decorators import user_passes_test
|
|
from .forms import UploadFileForm
|
|
from pruefplan_parser.utils import handle_uploaded_file
|
|
from medinf.settings import (
|
|
PP_EXAM_FILE,
|
|
PP_ATTENDANCE_FILE,
|
|
PP_STUDENT_FILE,
|
|
PP_SUBJECT_FILE,
|
|
PP_TEACHER_FILE,
|
|
)
|
|
|
|
|
|
def is_pp_admin(user):
|
|
return user.groups.filter(name="PP_ADMIN").exists()
|
|
|
|
|
|
def parse():
|
|
parser = JsonParser()
|
|
parser.clearTable()
|
|
parser.fillLecturerTable()
|
|
parser.fillAttendanceTable()
|
|
parser.fillSubjectTable()
|
|
parser.fillExamTable()
|
|
parser.fillStudentExamTable()
|
|
|
|
|
|
@user_passes_test(is_pp_admin)
|
|
def clearTable(request):
|
|
parser = JsonParser()
|
|
parser.clearTable()
|
|
return render(request, "pruefplan/clearTable.html")
|
|
|
|
|
|
@user_passes_test(is_pp_admin)
|
|
def upload_file(request):
|
|
if request.method == "POST":
|
|
form = UploadFileForm(request.POST, request.FILES)
|
|
if form.is_valid():
|
|
print(request.FILES)
|
|
handle_uploaded_file(
|
|
request.FILES.get("attendance_file"), PP_ATTENDANCE_FILE
|
|
)
|
|
handle_uploaded_file(request.FILES.get("student_file"), PP_STUDENT_FILE)
|
|
handle_uploaded_file(request.FILES.get("exams_file"), PP_EXAM_FILE)
|
|
handle_uploaded_file(request.FILES.get("lecturers_file"), PP_TEACHER_FILE)
|
|
handle_uploaded_file(request.FILES.get("subjects_file"), PP_SUBJECT_FILE)
|
|
parse()
|
|
if (
|
|
len(JsonParser.exceptionMessages) != 0
|
|
or len(JsonParser.warningMessages) != 0
|
|
):
|
|
context = {
|
|
"exceptions": JsonParser.exceptionMessages,
|
|
"warnings": JsonParser.warningMessages,
|
|
}
|
|
return render(request, "pruefplan/exceptionHandling.html", context)
|
|
else:
|
|
return render(request, "pruefplan/parse.html")
|
|
else:
|
|
form = UploadFileForm()
|
|
return render(request, "pruefplan/upload.html", {"form": form})
|