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.
101 lines
5.0 KiB
101 lines
5.0 KiB
import django.db.models.deletion
|
|
from django.conf import settings
|
|
from django.db import migrations, models
|
|
|
|
|
|
class Migration(migrations.Migration):
|
|
|
|
initial = True
|
|
|
|
dependencies = [
|
|
('account', '0001_initial'),
|
|
('course', '0001_initial'),
|
|
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
|
]
|
|
|
|
operations = [
|
|
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='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.lesson', verbose_name='lesson')),
|
|
],
|
|
options={
|
|
'verbose_name': 'Quiz',
|
|
'verbose_name_plural': 'Quizzes',
|
|
'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='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='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')),
|
|
('question', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='quiz.question')),
|
|
('participant', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='answers', to='quiz.quizparticipant')),
|
|
],
|
|
options={
|
|
'verbose_name': 'User Quiz Answer',
|
|
'verbose_name_plural': 'User Quiz Answers',
|
|
'ordering': ('-id',),
|
|
},
|
|
),
|
|
]
|