migrate teh rest

This commit is contained in:
Ross
2024-02-17 23:16:06 +00:00
parent 3a52855eb7
commit 5ea910cd63
10 changed files with 205 additions and 7 deletions
+17 -4
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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)",