migrate teh rest
This commit is contained in:
+17
-4
@@ -88,13 +88,13 @@ from .models import (
|
||||
|
||||
from rapids.models import Rapid as RapidQuestion, ExamQuestionDetail as RapidsExamQuestionDetail
|
||||
from rapids.models import Exam as RapidsExam
|
||||
from longs.models import Long as LongQuestion, LongSeries
|
||||
from longs.models import Long as LongQuestion, LongSeries, ExamQuestionDetail as LongsExamQuestionDetail
|
||||
from longs.models import Exam as LongsExam
|
||||
from anatomy.models import AnatomyQuestion as AnatomyQuestion, ExamQuestionDetail as AnatomyExamQuestionDetail
|
||||
from anatomy.models import Exam as AnatomyExam
|
||||
from sbas.models import Question as SbasQuestion
|
||||
from sbas.models import Question as SbasQuestion, ExamQuestionDetail as SbasExamQuestionDetail
|
||||
from sbas.models import Exam as SbasExam
|
||||
from physics.models import Question as PhysicsQuestion
|
||||
from physics.models import Question as PhysicsQuestion, ExamQuestionDetail as PhysicsExamQuestionDetail
|
||||
from physics.models import Exam as PhysicsExam
|
||||
|
||||
from django.db.models import Case, When
|
||||
@@ -881,6 +881,7 @@ class ExamViews(View, LoginRequiredMixin):
|
||||
# "examination",
|
||||
)
|
||||
.all()
|
||||
.order_by("examquestiondetail__sort_order")
|
||||
)
|
||||
elif self.app_name == "rapids":
|
||||
questions = (
|
||||
@@ -911,10 +912,11 @@ class ExamViews(View, LoginRequiredMixin):
|
||||
elif self.app_name == "physics":
|
||||
questions = (
|
||||
exam.exam_questions.select_related("category").all()
|
||||
.order_by("examquestiondetail__sort_order")
|
||||
# .prefetch_related("images", "abnormality", "region", "examination")
|
||||
)
|
||||
else:
|
||||
questions = exam.exam_questions.select_related().all()
|
||||
questions = exam.exam_questions.select_related().all().order_by("examquestiondetail__sort_order")
|
||||
|
||||
question_number = len(questions)
|
||||
|
||||
@@ -1228,6 +1230,17 @@ class ExamViews(View, LoginRequiredMixin):
|
||||
question_detail = RapidsExamQuestionDetail.objects.get(
|
||||
rapid=question, exam=exam
|
||||
)
|
||||
case "longs":
|
||||
question_detail = LongsExamQuestionDetail.objects.get(
|
||||
long=question, exam=exam)
|
||||
case "physics":
|
||||
question_detail = PhysicsExamQuestionDetail.objects.get(
|
||||
question=question, exam=exam
|
||||
)
|
||||
case "sbas":
|
||||
question_detail = SbasExamQuestionDetail.objects.get(
|
||||
question=question, exam=exam
|
||||
)
|
||||
case _:
|
||||
data = {"status": "error"}
|
||||
return JsonResponse(data, status=200)
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
# Generated by Django 4.1.4 on 2024-02-17 23:03
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('longs', '0016_rename_exam_collection_exam_examcollection'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='ExamQuestionDetail',
|
||||
fields=[
|
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('sort_order', models.IntegerField(default=1000)),
|
||||
('exam', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='longs.exam')),
|
||||
('rapid', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='longs.long')),
|
||||
],
|
||||
options={
|
||||
'ordering': ('sort_order',),
|
||||
},
|
||||
),
|
||||
migrations.RunSQL(
|
||||
"""INSERT INTO longs_examquestiondetail
|
||||
SELECT * FROM longs_exam_exam_questions;"""
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,22 @@
|
||||
# Generated by Django 4.1.4 on 2024-02-17 23:04
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('longs', '0017_examquestiondetail'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RemoveField(
|
||||
model_name='exam',
|
||||
name='exam_questions',
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='exam',
|
||||
name='exam_questions',
|
||||
field=models.ManyToManyField(related_name='exams', through='longs.ExamQuestionDetail', to='longs.long'),
|
||||
),
|
||||
]
|
||||
+10
-1
@@ -409,12 +409,21 @@ class LongCreationDefault(models.Model):
|
||||
def get_absolute_url(self):
|
||||
return reverse("longs:long_create")
|
||||
|
||||
class ExamQuestionDetail(models.Model):
|
||||
sort_order = models.IntegerField(default=1000)
|
||||
|
||||
exam = models.ForeignKey("Exam", on_delete=models.CASCADE)
|
||||
rapid = models.ForeignKey(Long, on_delete=models.CASCADE)
|
||||
|
||||
class Meta:
|
||||
ordering = ("sort_order",)
|
||||
|
||||
@reversion.register
|
||||
class Exam(ExamBase):
|
||||
app_name = "longs"
|
||||
|
||||
exam_questions = SortedManyToManyField(Long, related_name="exams", blank="true")
|
||||
#exam_questions = SortedManyToManyField(Long, related_name="exams", blank="true")
|
||||
exam_questions = models.ManyToManyField(Long, through=ExamQuestionDetail, related_name="exams")
|
||||
|
||||
time_limit = models.IntegerField(
|
||||
help_text="Exam time limit (in seconds). Default is 4500 seconds (75 minutes)",
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
# Generated by Django 4.1.4 on 2024-02-17 23:07
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('physics', '0006_rename_exam_collection_exam_examcollection'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='ExamQuestionDetail',
|
||||
fields=[
|
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('sort_order', models.IntegerField(default=1000)),
|
||||
('exam', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='physics.exam')),
|
||||
('rapid', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='physics.question')),
|
||||
],
|
||||
options={
|
||||
'ordering': ('sort_order',),
|
||||
},
|
||||
),
|
||||
migrations.RunSQL(
|
||||
"""INSERT INTO physics_examquestiondetail
|
||||
SELECT * FROM physics_exam_exam_questions;"""
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,22 @@
|
||||
# Generated by Django 4.1.4 on 2024-02-17 23:10
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('physics', '0007_examquestiondetail'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RemoveField(
|
||||
model_name='exam',
|
||||
name='exam_questions',
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='exam',
|
||||
name='exam_questions',
|
||||
field=models.ManyToManyField(related_name='exams', through='physics.ExamQuestionDetail', to='physics.question'),
|
||||
),
|
||||
]
|
||||
+11
-1
@@ -136,11 +136,21 @@ class Question(QuestionBase):
|
||||
return ((0,) * 5, ("Not answered",) * 5)
|
||||
|
||||
|
||||
class ExamQuestionDetail(models.Model):
|
||||
sort_order = models.IntegerField(default=1000)
|
||||
|
||||
exam = models.ForeignKey("Exam", on_delete=models.CASCADE)
|
||||
rapid = models.ForeignKey(Question, on_delete=models.CASCADE)
|
||||
|
||||
class Meta:
|
||||
ordering = ("sort_order",)
|
||||
|
||||
#@reversion.register
|
||||
class Exam(ExamBase):
|
||||
app_name = "physics"
|
||||
|
||||
exam_questions = SortedManyToManyField(Question, related_name="exams", blank="true")
|
||||
#exam_questions = SortedManyToManyField(Question, related_name="exams", blank="true")
|
||||
exam_questions = models.ManyToManyField(Question, through=ExamQuestionDetail, related_name="exams")
|
||||
|
||||
time_limit = models.IntegerField(
|
||||
help_text="Exam time limit (in seconds)",
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
# Generated by Django 4.1.4 on 2024-02-17 23:11
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('sbas', '0006_rename_exam_collection_exam_examcollection'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='ExamQuestionDetail',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('sort_order', models.IntegerField(default=1000)),
|
||||
('exam', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='sbas.exam')),
|
||||
('rapid', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='sbas.question')),
|
||||
],
|
||||
options={
|
||||
'ordering': ('sort_order',),
|
||||
},
|
||||
),
|
||||
migrations.RunSQL(
|
||||
"""INSERT INTO sbas_examquestiondetail
|
||||
SELECT * FROM sbas_exam_exam_questions;"""
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,22 @@
|
||||
# Generated by Django 4.1.4 on 2024-02-17 23:13
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('sbas', '0007_examquestiondetail'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RemoveField(
|
||||
model_name='exam',
|
||||
name='exam_questions',
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='exam',
|
||||
name='exam_questions',
|
||||
field=models.ManyToManyField(related_name='exams', through='sbas.ExamQuestionDetail', to='sbas.question'),
|
||||
),
|
||||
]
|
||||
+11
-1
@@ -154,11 +154,21 @@ class Question(QuestionBase):
|
||||
return self.stem.replace("<p>", "", 1).replace("</p>", "", 1)
|
||||
|
||||
|
||||
class ExamQuestionDetail(models.Model):
|
||||
sort_order = models.IntegerField(default=1000)
|
||||
|
||||
exam = models.ForeignKey("Exam", on_delete=models.CASCADE)
|
||||
rapid = models.ForeignKey(Question, on_delete=models.CASCADE)
|
||||
|
||||
class Meta:
|
||||
ordering = ("sort_order",)
|
||||
|
||||
@reversion.register
|
||||
class Exam(ExamBase):
|
||||
app_name = "sbas"
|
||||
|
||||
exam_questions = SortedManyToManyField(Question, related_name="exams", blank="true")
|
||||
#exam_questions = SortedManyToManyField(Question, related_name="exams", blank="true")
|
||||
exam_questions = models.ManyToManyField(Question, through=ExamQuestionDetail, related_name="exams")
|
||||
|
||||
time_limit = models.IntegerField(
|
||||
help_text="Exam time limit (in seconds)",
|
||||
|
||||
Reference in New Issue
Block a user