struktur_library

This commit is contained in:
nik8
2025-03-20 21:34:17 +01:00
parent f6459965e0
commit 157daae740
3 changed files with 78 additions and 38 deletions

View File

@@ -14,68 +14,104 @@ from django.contrib.auth.models import User
# Übersicht aller Quizze
def overview_quiz(request):
#Filter
form = QuizFilterForm(request.GET)
# GET statt POST für URL-Parameter
try:
filter_my_quizzes = QivipQuiz.objects.filter(user_id=request.user).annotate(max_amout_questions=Count('question'))
except:
filter_my_quizzes = QivipQuiz.objects.none()
filter_other_quizzes = QivipQuiz.objects.annotate(max_amout_questions=Count('question'))
my_quizzes = QivipQuiz.objects.filter(user_id=request.user).annotate(max_amout_questions=Count('question'))
filter_quizzes = QivipQuiz.objects.annotate(max_amout_questions=Count('question')) # Frageanzahl berechnen
if form.is_valid():
search = form.cleaned_data.get('search')
username= form.cleaned_data.get('user')
max_amout_questions= form.cleaned_data.get('max_amout_questions')
min_amout_questions= form.cleaned_data.get('min_amout_questions')
if search: # Suche nach Namen
filter_quizzes = filter_quizzes.filter(name__icontains=search)
my_quizzes = my_quizzes.filter(name__icontains=search)
filter_other_quizzes = filter_other_quizzes.filter(name__icontains=search)
filter_my_quizzes = filter_my_quizzes.filter(name__icontains=search)
if min_amout_questions:
filter_other_quizzes = filter_other_quizzes.filter(max_amout_questions__gte=min_amout_questions)
try:
filter_my_quizzes =filter_my_quizzes.filter(max_amout_questions__gte=min_amout_questions)
except:
filter_my_quizzes = QivipQuiz.objects.none()
if max_amout_questions:
filter_quizzes = filter_quizzes.filter(max_amout_questions__lte=max_amout_questions)
my_quizzes = my_quizzes.filter(max_amout_questions__lte=max_amout_questions)
filter_other_quizzes = filter_other_quizzes.filter(max_amout_questions__lte=max_amout_questions)
try:
filter_my_quizzes =filter_my_quizzes.filter(max_amout_questions__lte=max_amout_questions)
except:
filter_my_quizzes = QivipQuiz.objects.none()
if username:
try:
user = User.objects.get(username=username) # Benutzer anhand des Namens holen
filter_quizzes = filter_quizzes.filter(user_id=user.id)
my_quizzes = my_quizzes.filter(user_id=user.id) # Nach der user_id filtern
filter_other_quizzes = filter_other_quizzes.filter(user_id=user.id)
filter_my_quizzes = filter_my_quizzes.filter(user_id=user.id) # Nach der user_id filtern
except User.DoesNotExist:
filter_quizzes = QivipQuiz.objects.none() # Falls User nicht existiert, leere Query zurückgeben
my_quizzes = QivipQuiz.objects.none()
all_quizzes=filter_quizzes.exclude(user_id=request.user)
quizzes=my_quizzes
#WICHTIG: HIER sind all_quizzes nicht alle Quizze sondern die herausgefilterten Quizze
filter_other_quizzes = QivipQuiz.objects.none() # Falls User nicht existiert, leere Query zurückgeben
filter_my_quizzes = QivipQuiz.objects.none()
try:
filter_other_quizzes=filter_other_quizzes.exclude(user_id=request.user)
except:
filter_other_quizzes=filter_other_quizzes
my_paginator = Paginator(filter_my_quizzes, 3) # 3 Quiz pro Seite
my_page_number = request.GET.get('my_page')
filter_my_quizzes = my_paginator.get_page(my_page_number)
# Paginator für fremde Quizze
other_paginator = Paginator(filter_other_quizzes, 3) # 3 Quiz pro Seite
other_page_number = request.GET.get('other_page')
filter_other_quizzes = other_paginator.get_page(other_page_number)
context = {
'show_search': True,
'quizzes': quizzes,
'all_quizzes': all_quizzes,
'filter_my_quizzes': filter_my_quizzes,
'filter_other_quizzes': filter_other_quizzes,
'form': form,
}
return render(request, 'library/overview_quiz.html', context)
try:
quizzes = QivipQuiz.objects.filter(user_id=request.user)
all_quizzes = QivipQuiz.objects.filter(status='öffentlich').exclude(user_id=request.user).filter(question__isnull=False).distinct()
filter_my_quizzes = QivipQuiz.objects.filter(user_id=request.user)
filter_other_quizzes = QivipQuiz.objects.filter(status='öffentlich').exclude(user_id=request.user).filter(question__isnull=False).distinct()
context = {
'show_search': True,
'quizzes': quizzes,
'all_quizzes': all_quizzes,
'filter_my_quizzes': filter_my_quizzes,
'filter_other_quizzes': filter_other_quizzes,
'form': form,
}
return render(request, 'library/overview_quiz.html', context)
except:
all_quizzes = QivipQuiz.objects.filter(status='öffentlich').filter(question__isnull=False).distinct()
filter_other_quizzes = QivipQuiz.objects.filter(status='öffentlich').filter(question__isnull=False).distinct()
context = {
'show_search': True,
'quizzes': None,
'all_quizzes': all_quizzes,
'filter_my_quizzes': None,
'filter_other_quizzes': filter_other_quizzes,
'form': form,
}
return render(request, 'library/overview_quiz.html', context)
# Neues Quiz erstellen
@login_required
def new_quiz(request):