generalise a QuestionBase

This commit is contained in:
Ross
2023-06-05 09:10:54 +01:00
parent ac558b9ea2
commit e0723d4d3a
8 changed files with 177 additions and 141 deletions
+21 -1
View File
@@ -24,6 +24,7 @@ from django.contrib.auth.models import User
from django.db.models.signals import post_save
from django.dispatch import receiver
class Plane(models.Model):
plane = models.CharField(max_length=200, unique=True)
@@ -71,15 +72,29 @@ class QuestionBase(models.Model):
default=False,
)
created_date = models.DateTimeField(default=timezone.now)
open_access = models.BooleanField(
help_text="If a question should be freely available to browse", default=True
)
feedback = models.TextField(null=True, blank=True, help_text="Question Feedback")
notes = GenericRelation("generic.QuestionNote")
class Meta:
abstract = True
def get_unanswered_mark_and_text(self) -> tuple(int, str):
def get_unanswered_mark_and_text(self) -> tuple[ int, str ]:
"""
Override in models if needed
"""
return (0, "Not answered")
def get_primary_answer(self):
"""If this makes sense in the question/answer context override"""
return None
class ExamBase(models.Model):
name = models.CharField(max_length=200, help_text="Name of the exam")
@@ -436,6 +451,11 @@ class UserAnswerBase(models.Model):
def get_absolute_url(self):
return reverse(f"{self.app_name}:user_answer_view", kwargs={"pk": self.pk})
def get_answer(self):
"""might need overriding"""
return self.answer
class NoteType(models.Model):
note_type = models.CharField(max_length=200)
+1 -4
View File
@@ -1803,10 +1803,7 @@ class ExamViews(View, LoginRequiredMixin):
answer_score = score
ans = text
else:
if exam.app_name == "rapids" and user_answer.normal:
ans = "Normal"
else:
ans = user_answer.answer
ans = user_answer.get_answer()
answer_score = user_answer.get_answer_score()
correct_answer = q.get_primary_answer()