All checks were successful
Deploy Quartz site to GitHub Pages / build (push) Successful in 2m29s
39 lines
1.3 KiB
Python
39 lines
1.3 KiB
Python
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'})
|
|
)
|