1
0
Files
medical-notes/stroma/quiz/forms.py
Johan Dahlin 50366b9b9c
All checks were successful
Deploy Quartz site to GitHub Pages / build (push) Successful in 2m29s
vault backup: 2025-12-26 02:09:22
2025-12-26 02:09:22 +01:00

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'})
)