Uploadfunktion!
This commit is contained in:
@@ -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:
|
||||
|
||||
@@ -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,6 +218,15 @@ 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)
|
||||
@@ -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})
|
||||
|
||||
@@ -256,6 +274,7 @@ def copy_quiz(request, pk):
|
||||
original_quiz = get_object_or_404(QivipQuiz, pk=pk)
|
||||
|
||||
|
||||
|
||||
# Quiz kopieren (ohne ID, damit ein neues Objekt erstellt wird)
|
||||
|
||||
# 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')
|
||||
|
||||
|
||||
@@ -5,6 +5,20 @@
|
||||
<form method="post" enctype="multipart/form-data">
|
||||
{% csrf_token %}
|
||||
{{ form.as_p }}
|
||||
{% if form.instance.image %}
|
||||
<img src="{{ form.instance.image.url }}" style="max-width: 100px;" alt="Bild der Frage">
|
||||
<label for="reset_image">
|
||||
<input type="checkbox" name="reset_image" id="reset_image">
|
||||
Bild zurücksetzen
|
||||
</label>
|
||||
{% endif %}
|
||||
<div>
|
||||
<label class="font-bold" for="quiz_image">Bild:</label>
|
||||
<input value="form.instance.image.url" class="bg-blue-200 p-2 m-2 rounded-lg border-2 border-blue-400" type="file" name="quiz_image" id="quiz_image">
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="flex justify-center space-x-3">
|
||||
<a href="{% if object.quiz_id %}{% url 'library:detail_quiz' object.quiz_id.id %}{% else %}{% url 'library:overview_quiz' %}{% endif %}"
|
||||
class="inline-flex items-center px-4 py-2 border border-gray-300 shadow-sm text-sm font-medium rounded-md text-gray-700 bg-white hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500">
|
||||
|
||||
@@ -26,6 +26,10 @@
|
||||
|
||||
{% if image %}
|
||||
<img src="{{ image.url }}" style="max-width: 500px;" alt="Bild der Frage">
|
||||
<label for="reset_image">
|
||||
<input type="checkbox" name="reset_ques_image" id="reset_ques_image">
|
||||
Bild zurücksetzen
|
||||
</label>
|
||||
{% endif %}
|
||||
<div>
|
||||
<label class="font-bold" for="question_image">Bild:</label>
|
||||
|
||||
@@ -26,6 +26,10 @@
|
||||
|
||||
{% if image %}
|
||||
<img src="{{ image.url }}" style="max-width: 500px;" alt="Bild der Frage">
|
||||
<label for="reset_image">
|
||||
<input type="checkbox" name="reset_ques_image" id="reset_ques_image">
|
||||
Bild zurücksetzen
|
||||
</label>
|
||||
{% endif %}
|
||||
<div>
|
||||
<label class="font-bold" for="question_image">Bild:</label>
|
||||
|
||||
Reference in New Issue
Block a user