from django.shortcuts import render, redirect, get_object_or_404 from django.contrib.auth.decorators import login_required from django.contrib.auth.models import User from .models import QivipQuiz, QivipQuestion from .forms import QuizForm, QuestionForm # Übersicht aller Quizze @login_required def overview_quiz(request): quizzes = QivipQuiz.objects.filter(user_id=request.user) return render(request, 'library/overview_quiz.html', {'quizzes': quizzes}) # Neues Quiz erstellen @login_required def new_quiz(request): if request.method == 'POST': form = QuizForm(request.POST) if form.is_valid(): quiz = form.save(commit=False) quiz.user_id = request.user quiz.save() form.save_m2m() # Speichert die Many-to-Many Beziehungen (Tags) return redirect('library:edit_quiz', pk=quiz.pk) else: form = QuizForm() return render(request, 'library/form.html', {'form': form}) # Quiz bearbeiten @login_required def edit_quiz(request, pk): quiz = get_object_or_404(QivipQuiz, pk=pk, user_id=request.user) if request.method == 'POST': form = QuizForm(request.POST, instance=quiz) if form.is_valid(): form.save() return redirect('library:overview_quiz') else: form = QuizForm(instance=quiz) return render(request, 'library/form.html', {'form': form}) # Quiz löschen @login_required def delete_quiz(request, pk): quiz = get_object_or_404(QivipQuiz, pk=pk, user_id=request.user) if request.method == 'POST': quiz.delete() return redirect('library:overview_quiz') return render(request, 'library/delete_confirmation.html', {'object': quiz}) # Quiz anzeigen @login_required def detail_quiz(request, pk): quiz = get_object_or_404(QivipQuiz, pk=pk, user_id=request.user) questions = QivipQuestion.objects.filter(quiz_id=quiz) return render(request, 'library/detail_quiz.html', {'quiz': quiz, 'questions': questions}) # Übersicht aller Fragen @login_required def question_list(request): questions = QivipQuestion.objects.filter(quiz_id__user_id=request.user) return render(request, 'library/question_list.html', {'questions': questions}) # Neue Frage erstellen @login_required def new_question(request): if request.method == 'POST': form = QuestionForm(request.POST) if form.is_valid(): question = form.save(commit=False) # Prüfe ob der User Zugriff auf das Quiz hat if question.quiz_id.user_id != request.user: return redirect('library:question_list') question.save() return redirect('library:edit_question', pk=question.pk) else: form = QuestionForm() return render(request, 'library/form.html', {'form': form}) # Frage bearbeiten @login_required def edit_question(request, pk): question = get_object_or_404(QivipQuestion, pk=pk, quiz_id__user_id=request.user) if request.method == 'POST': form = QuestionForm(request.POST, instance=question) if form.is_valid(): form.save() return redirect('library:edit_question', pk=pk) else: form = QuestionForm(instance=question) return render(request, 'library/form.html', {'form': form}) # Frage löschen @login_required def delete_question(request, pk): question = get_object_or_404(QivipQuestion, pk=pk, quiz_id__user_id=request.user) if request.method == 'POST': question.delete() return redirect('library:detail_quiz', pk=question.quiz_id.pk) return render(request, 'library/delete_confirmation.html', {'object': question})