vault backup: 2025-12-26 02:09:22
All checks were successful
Deploy Quartz site to GitHub Pages / build (push) Successful in 2m29s
All checks were successful
Deploy Quartz site to GitHub Pages / build (push) Successful in 2m29s
This commit is contained in:
38
stroma/quiz/forms.py
Normal file
38
stroma/quiz/forms.py
Normal file
@@ -0,0 +1,38 @@
|
||||
from django import forms
|
||||
from django.db.models import Count
|
||||
from .models import Course, Tag, Exam
|
||||
|
||||
class TagModelMultipleChoiceField(forms.ModelMultipleChoiceField):
|
||||
def label_from_instance(self, obj):
|
||||
return f"{obj.name} ({obj.question_count})"
|
||||
|
||||
class ExamModelMultipleChoiceField(forms.ModelMultipleChoiceField):
|
||||
def label_from_instance(self, obj):
|
||||
return f"{obj.course.name} - {obj.date}"
|
||||
|
||||
class CreateQuizForm(forms.Form):
|
||||
course = forms.ModelChoiceField(
|
||||
queryset=Course.objects.all(),
|
||||
required=False,
|
||||
empty_label="Alla kurser",
|
||||
widget=forms.Select(attrs={'class': 'form-control'})
|
||||
)
|
||||
exams = ExamModelMultipleChoiceField(
|
||||
queryset=Exam.objects.all(),
|
||||
required=False,
|
||||
widget=forms.SelectMultiple(attrs={'class': 'form-control'})
|
||||
)
|
||||
tags = TagModelMultipleChoiceField(
|
||||
queryset=Tag.objects.annotate(question_count=Count('questions')).order_by('name'),
|
||||
required=False,
|
||||
widget=forms.SelectMultiple(attrs={'class': 'form-control'})
|
||||
)
|
||||
QUESTION_TYPES = [
|
||||
('single', 'Envalsfrågor'),
|
||||
('multi', 'Flervalsfrågor'),
|
||||
]
|
||||
question_type = forms.MultipleChoiceField(
|
||||
choices=QUESTION_TYPES,
|
||||
required=False,
|
||||
widget=forms.SelectMultiple(attrs={'class': 'form-control'})
|
||||
)
|
||||
Reference in New Issue
Block a user