Uploadfunktion!
This commit is contained in:
@@ -4,7 +4,7 @@ from .models import QivipQuiz, QivipQuestion
|
|||||||
class QuizForm(forms.ModelForm):
|
class QuizForm(forms.ModelForm):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = QivipQuiz
|
model = QivipQuiz
|
||||||
fields = ['name', 'description','image', 'status', 'category','difficulty','credits']
|
fields = ['name', 'description', 'status', 'category','difficulty','credits']
|
||||||
|
|
||||||
class QuestionForm(forms.ModelForm):
|
class QuestionForm(forms.ModelForm):
|
||||||
class Meta:
|
class Meta:
|
||||||
|
|||||||
@@ -193,10 +193,14 @@ def favorite_quiz(request, pk):
|
|||||||
# Neues Quiz erstellen
|
# Neues Quiz erstellen
|
||||||
@login_required
|
@login_required
|
||||||
def new_quiz(request):
|
def new_quiz(request):
|
||||||
|
|
||||||
|
|
||||||
if request.method == 'POST':
|
if request.method == 'POST':
|
||||||
|
quiz_image = request.FILES.get('quiz_image', None)
|
||||||
form = QuizForm(request.POST, request.FILES)
|
form = QuizForm(request.POST, request.FILES)
|
||||||
if form.is_valid():
|
if form.is_valid():
|
||||||
quiz = form.save(commit=False)
|
quiz = form.save(commit=False)
|
||||||
|
quiz.image = quiz_image
|
||||||
quiz.user_id = request.user
|
quiz.user_id = request.user
|
||||||
#quiz.creator = request.user
|
#quiz.creator = request.user
|
||||||
quiz.save()
|
quiz.save()
|
||||||
@@ -214,7 +218,16 @@ def edit_quiz(request, pk):
|
|||||||
if request.method == 'POST':
|
if request.method == 'POST':
|
||||||
form = QuizForm(request.POST, instance=quiz, files=request.FILES)
|
form = QuizForm(request.POST, instance=quiz, files=request.FILES)
|
||||||
if form.is_valid():
|
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()
|
form.save()
|
||||||
return redirect('library:detail_quiz', pk=pk)
|
return redirect('library:detail_quiz', pk=pk)
|
||||||
#return modified(request, pk)
|
#return modified(request, pk)
|
||||||
@@ -228,7 +241,12 @@ def edit_quiz(request, pk):
|
|||||||
def delete_quiz(request, pk):
|
def delete_quiz(request, pk):
|
||||||
quiz = get_object_or_404(QivipQuiz, pk=pk, user_id=request.user)
|
quiz = get_object_or_404(QivipQuiz, pk=pk, user_id=request.user)
|
||||||
if request.method == 'POST':
|
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()
|
quiz.delete()
|
||||||
|
|
||||||
return redirect('library:overview_quiz')
|
return redirect('library:overview_quiz')
|
||||||
return render(request, 'library/delete_confirmation.html', {'object': quiz})
|
return render(request, 'library/delete_confirmation.html', {'object': quiz})
|
||||||
|
|
||||||
@@ -254,6 +272,7 @@ def detail_quiz(request, pk):
|
|||||||
@login_required
|
@login_required
|
||||||
def copy_quiz(request, pk):
|
def copy_quiz(request, pk):
|
||||||
original_quiz = get_object_or_404(QivipQuiz, pk=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.pk = None # Setzt die ID auf None, damit Django es als neues Objekt erkennt
|
||||||
new_quiz.uuid = uuid.uuid4() # Neue UUID generieren
|
new_quiz.uuid = uuid.uuid4() # Neue UUID generieren
|
||||||
new_quiz.user_id = request.user # Neuer Besitzer ist der aktuelle User
|
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.base_quiz_id = pk
|
||||||
new_quiz.rating_count = 0
|
new_quiz.rating_count = 0
|
||||||
new_quiz.average_rating = 3.0
|
new_quiz.average_rating = 3.0
|
||||||
#new_quiz.creator = original_quiz.creator or request.user
|
|
||||||
new_quiz.save() # Speichern als neues Objekt
|
new_quiz.save() # Speichern als neues Objekt
|
||||||
# Optional: Beschreibung anpassen
|
# Optional: Beschreibung anpassen
|
||||||
# Alle zugehörigen Fragen kopieren
|
# Alle zugehörigen Fragen kopieren
|
||||||
@@ -400,6 +418,8 @@ def new_question(request):
|
|||||||
@login_required
|
@login_required
|
||||||
def edit_question(request, pk):
|
def edit_question(request, pk):
|
||||||
question = get_object_or_404(QivipQuestion, pk=pk, quiz_id__user_id=request.user)
|
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:
|
if question.quiz_id.user_id != request.user:
|
||||||
return redirect('library:question_list')
|
return redirect('library:question_list')
|
||||||
|
|
||||||
|
|||||||
@@ -5,6 +5,20 @@
|
|||||||
<form method="post" enctype="multipart/form-data">
|
<form method="post" enctype="multipart/form-data">
|
||||||
{% csrf_token %}
|
{% csrf_token %}
|
||||||
{{ form.as_p }}
|
{{ 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">
|
<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 %}"
|
<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">
|
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 %}
|
{% if image %}
|
||||||
<img src="{{ image.url }}" style="max-width: 500px;" alt="Bild der Frage">
|
<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 %}
|
{% endif %}
|
||||||
<div>
|
<div>
|
||||||
<label class="font-bold" for="question_image">Bild:</label>
|
<label class="font-bold" for="question_image">Bild:</label>
|
||||||
|
|||||||
@@ -26,6 +26,10 @@
|
|||||||
|
|
||||||
{% if image %}
|
{% if image %}
|
||||||
<img src="{{ image.url }}" style="max-width: 500px;" alt="Bild der Frage">
|
<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 %}
|
{% endif %}
|
||||||
<div>
|
<div>
|
||||||
<label class="font-bold" for="question_image">Bild:</label>
|
<label class="font-bold" for="question_image">Bild:</label>
|
||||||
|
|||||||
Reference in New Issue
Block a user