You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
220 lines
7.7 KiB
220 lines
7.7 KiB
# Generated by Django 4.2.27 on 2026-01-22 10:48
|
|
|
|
from django.conf import settings
|
|
from django.db import migrations, models
|
|
import django.db.models.deletion
|
|
|
|
|
|
class Migration(migrations.Migration):
|
|
initial = True
|
|
|
|
dependencies = [
|
|
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
|
("course", "0001_initial"),
|
|
("account", "0001_initial"),
|
|
]
|
|
|
|
operations = [
|
|
migrations.CreateModel(
|
|
name="Quiz",
|
|
fields=[
|
|
(
|
|
"id",
|
|
models.BigAutoField(
|
|
auto_created=True,
|
|
primary_key=True,
|
|
serialize=False,
|
|
verbose_name="ID",
|
|
),
|
|
),
|
|
(
|
|
"title",
|
|
models.CharField(
|
|
help_text="Quiz Title", max_length=255, verbose_name="title"
|
|
),
|
|
),
|
|
(
|
|
"description",
|
|
models.CharField(
|
|
blank=True, max_length=55, null=True, verbose_name="Description"
|
|
),
|
|
),
|
|
("each_question_timing", models.PositiveIntegerField()),
|
|
("status", models.BooleanField(default=True)),
|
|
(
|
|
"lesson",
|
|
models.ForeignKey(
|
|
on_delete=django.db.models.deletion.CASCADE,
|
|
related_name="quizzes",
|
|
to="course.courselesson",
|
|
verbose_name="lesson",
|
|
),
|
|
),
|
|
],
|
|
options={
|
|
"verbose_name": "Quiz",
|
|
"verbose_name_plural": "Quizzes",
|
|
"ordering": ("-id",),
|
|
},
|
|
),
|
|
migrations.CreateModel(
|
|
name="QuizRankUser",
|
|
fields=[],
|
|
options={
|
|
"verbose_name": "Rank Quiz",
|
|
"verbose_name_plural": "Rank Quizzes",
|
|
"proxy": True,
|
|
"indexes": [],
|
|
"constraints": [],
|
|
},
|
|
bases=("account.user",),
|
|
),
|
|
migrations.CreateModel(
|
|
name="QuizParticipant",
|
|
fields=[
|
|
(
|
|
"id",
|
|
models.BigAutoField(
|
|
auto_created=True,
|
|
primary_key=True,
|
|
serialize=False,
|
|
verbose_name="ID",
|
|
),
|
|
),
|
|
("started_at", models.DateTimeField(verbose_name="started at")),
|
|
("ended_at", models.DateTimeField(verbose_name="ended at")),
|
|
(
|
|
"total_timing",
|
|
models.PositiveIntegerField(
|
|
help_text="Seconds take to finish the quiz"
|
|
),
|
|
),
|
|
("question_score", models.PositiveIntegerField()),
|
|
("timing_score", models.PositiveIntegerField()),
|
|
("total_score", models.PositiveIntegerField()),
|
|
(
|
|
"quiz",
|
|
models.ForeignKey(
|
|
on_delete=django.db.models.deletion.CASCADE,
|
|
related_name="participants",
|
|
to="quiz.quiz",
|
|
),
|
|
),
|
|
(
|
|
"user",
|
|
models.ForeignKey(
|
|
on_delete=django.db.models.deletion.CASCADE,
|
|
related_name="uquizzes",
|
|
to=settings.AUTH_USER_MODEL,
|
|
verbose_name="user",
|
|
),
|
|
),
|
|
],
|
|
options={
|
|
"verbose_name": "Participant",
|
|
"verbose_name_plural": "Participants",
|
|
"ordering": ("-id",),
|
|
},
|
|
),
|
|
migrations.CreateModel(
|
|
name="Question",
|
|
fields=[
|
|
(
|
|
"id",
|
|
models.BigAutoField(
|
|
auto_created=True,
|
|
primary_key=True,
|
|
serialize=False,
|
|
verbose_name="ID",
|
|
),
|
|
),
|
|
("question", models.CharField(max_length=255)),
|
|
("option1", models.CharField(max_length=255, verbose_name="option 1")),
|
|
("option2", models.CharField(max_length=255, verbose_name="option 2")),
|
|
("option3", models.CharField(max_length=255, verbose_name="option 3")),
|
|
("option4", models.CharField(max_length=255, verbose_name="option 4")),
|
|
(
|
|
"correct_answer",
|
|
models.PositiveSmallIntegerField(
|
|
choices=[
|
|
(1, "Option 1"),
|
|
(2, "Option 2"),
|
|
(3, "Option 3"),
|
|
(4, "Option 4"),
|
|
]
|
|
),
|
|
),
|
|
(
|
|
"created_at",
|
|
models.DateTimeField(auto_now_add=True, verbose_name="created at"),
|
|
),
|
|
("priority", models.IntegerField(blank=True, null=True)),
|
|
(
|
|
"quiz",
|
|
models.ForeignKey(
|
|
on_delete=django.db.models.deletion.CASCADE,
|
|
related_name="questions",
|
|
to="quiz.quiz",
|
|
verbose_name="quiz",
|
|
),
|
|
),
|
|
],
|
|
options={
|
|
"verbose_name": "Question",
|
|
"verbose_name_plural": "Questions",
|
|
"ordering": ("-priority", "-id"),
|
|
},
|
|
),
|
|
migrations.CreateModel(
|
|
name="ParticipantAnswer",
|
|
fields=[
|
|
(
|
|
"id",
|
|
models.BigAutoField(
|
|
auto_created=True,
|
|
primary_key=True,
|
|
serialize=False,
|
|
verbose_name="ID",
|
|
),
|
|
),
|
|
(
|
|
"option_num",
|
|
models.PositiveSmallIntegerField(
|
|
choices=[
|
|
(1, "Option 1"),
|
|
(2, "Option 2"),
|
|
(3, "Option 3"),
|
|
(4, "Option 4"),
|
|
],
|
|
verbose_name="selected option",
|
|
),
|
|
),
|
|
("at_time", models.DateTimeField()),
|
|
(
|
|
"answer_timing",
|
|
models.PositiveSmallIntegerField(
|
|
default=0, verbose_name="seconds take to answer"
|
|
),
|
|
),
|
|
(
|
|
"participant",
|
|
models.ForeignKey(
|
|
on_delete=django.db.models.deletion.CASCADE,
|
|
related_name="answers",
|
|
to="quiz.quizparticipant",
|
|
),
|
|
),
|
|
(
|
|
"question",
|
|
models.ForeignKey(
|
|
on_delete=django.db.models.deletion.CASCADE, to="quiz.question"
|
|
),
|
|
),
|
|
],
|
|
options={
|
|
"verbose_name": "User Quiz Answer",
|
|
"verbose_name_plural": "User Quiz Answers",
|
|
"ordering": ("-id",),
|
|
},
|
|
),
|
|
]
|