From 50cd95daf121a1228072b88201e1e8c500a3d8c8 Mon Sep 17 00:00:00 2001 From: ben8 Date: Tue, 22 Apr 2025 17:52:34 +0200 Subject: [PATCH] Uploadfunktion! --- django/library/forms.py | 2 +- django/library/views.py | 26 ++++++++++++++++--- django/templates/library/form.html | 14 ++++++++++ .../question/question_multiple_choice.html | 4 +++ .../library/question/question_true_false.html | 4 +++ 5 files changed, 46 insertions(+), 4 deletions(-) diff --git a/django/library/forms.py b/django/library/forms.py index 7cb8773..fb55f92 100644 --- a/django/library/forms.py +++ b/django/library/forms.py @@ -4,7 +4,7 @@ from .models import QivipQuiz, QivipQuestion class QuizForm(forms.ModelForm): class Meta: model = QivipQuiz - fields = ['name', 'description','image', 'status', 'category','difficulty','credits'] + fields = ['name', 'description', 'status', 'category','difficulty','credits'] class QuestionForm(forms.ModelForm): class Meta: diff --git a/django/library/views.py b/django/library/views.py index 5c33638..d03b602 100644 --- a/django/library/views.py +++ b/django/library/views.py @@ -193,10 +193,14 @@ def favorite_quiz(request, pk): # Neues Quiz erstellen @login_required def new_quiz(request): + + if request.method == 'POST': + quiz_image = request.FILES.get('quiz_image', None) form = QuizForm(request.POST, request.FILES) if form.is_valid(): quiz = form.save(commit=False) + quiz.image = quiz_image quiz.user_id = request.user #quiz.creator = request.user quiz.save() @@ -214,7 +218,16 @@ def edit_quiz(request, pk): if request.method == 'POST': form = QuizForm(request.POST, instance=quiz, files=request.FILES) if form.is_valid(): - + try: + quiz_image = request.FILES['quiz_image'] + quiz.image=quiz_image + quiz.save() + except Exception: + pass + if 'reset_image' in request.POST: + quiz.image = None + + form.save() return redirect('library:detail_quiz', pk=pk) #return modified(request, pk) @@ -228,7 +241,12 @@ def edit_quiz(request, pk): def delete_quiz(request, pk): quiz = get_object_or_404(QivipQuiz, pk=pk, user_id=request.user) if request.method == 'POST': + if quiz.image: + quiz.image = None # Entfernt das Bild aus der Datenbank, aber löscht es nicht + quiz.save() # Speichere die Änderungen in der Datenbank + quiz.delete() + return redirect('library:overview_quiz') return render(request, 'library/delete_confirmation.html', {'object': quiz}) @@ -254,6 +272,7 @@ def detail_quiz(request, pk): @login_required def copy_quiz(request, pk): original_quiz = get_object_or_404(QivipQuiz, pk=pk) + # Quiz kopieren (ohne ID, damit ein neues Objekt erstellt wird) @@ -264,11 +283,10 @@ def copy_quiz(request, pk): new_quiz.pk = None # Setzt die ID auf None, damit Django es als neues Objekt erkennt new_quiz.uuid = uuid.uuid4() # Neue UUID generieren new_quiz.user_id = request.user # Neuer Besitzer ist der aktuelle User - new_quiz.name += " - Kopie" # Optional: Name anpassen + new_quiz.name += " - Kopie" new_quiz.base_quiz_id = pk new_quiz.rating_count = 0 new_quiz.average_rating = 3.0 - #new_quiz.creator = original_quiz.creator or request.user new_quiz.save() # Speichern als neues Objekt # Optional: Beschreibung anpassen # Alle zugehörigen Fragen kopieren @@ -400,6 +418,8 @@ def new_question(request): @login_required def edit_question(request, pk): question = get_object_or_404(QivipQuestion, pk=pk, quiz_id__user_id=request.user) + if 'reset_ques_image' in request.POST: + question.image = None if question.quiz_id.user_id != request.user: return redirect('library:question_list') diff --git a/django/templates/library/form.html b/django/templates/library/form.html index a7d8da5..7b75c45 100644 --- a/django/templates/library/form.html +++ b/django/templates/library/form.html @@ -5,6 +5,20 @@
{% csrf_token %} {{ form.as_p }} + {% if form.instance.image %} + Bild der Frage + + {% endif %} +
+ + +
+ + +