62 lines
1.7 KiB
Python
62 lines
1.7 KiB
Python
from django.db.models import Manager
|
|
from django.apps import apps
|
|
from django.conf import settings
|
|
from categories.models import Category
|
|
|
|
|
|
class TestManager(Manager):
|
|
|
|
def create(
|
|
self, *,
|
|
category=None,
|
|
questions=[],
|
|
**kwargs
|
|
):
|
|
Question = apps.get_model("questions", "Question")
|
|
Answer = apps.get_model("answers", "Answer")
|
|
category = category
|
|
|
|
instance = super().create(
|
|
name=kwargs.get("name"),
|
|
passing_score=kwargs.get("passing_score"),
|
|
category=category,
|
|
created_by=kwargs.get("user"),
|
|
visible=kwargs.get("visible"),
|
|
password=kwargs.get("password")
|
|
)
|
|
for question in questions:
|
|
question_instance = Question.objects.create(
|
|
name=question["name"],
|
|
description=question.get("description", ""),
|
|
test=instance
|
|
)
|
|
for answer in question["answers"]:
|
|
Answer.objects.create(
|
|
description=answer["description"],
|
|
is_correct=answer.get("is_correct", False),
|
|
question=question_instance
|
|
)
|
|
|
|
return instance
|
|
|
|
|
|
class TournamentManager(Manager):
|
|
|
|
def create(
|
|
self, *,
|
|
name="",
|
|
questions=[],
|
|
passing_score=0,
|
|
**kwargs
|
|
):
|
|
Question = apps.get_model("questions", "Question")
|
|
|
|
instance = super().create(
|
|
name=name,
|
|
passing_score=passing_score
|
|
)
|
|
for q in questions:
|
|
qq = Question.objects.get(id=q)
|
|
qq.tournament.add(instance.id)
|
|
return instance
|