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

# 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",),
},
),
]