From 9d90b7a0454fdd94ee4f2e21dc4abde536907997 Mon Sep 17 00:00:00 2001 From: Ross Date: Sun, 12 Dec 2021 21:41:49 +0000 Subject: [PATCH] . --- sbas/models.py | 90 ++++++++++++++++++++++++++++---------------------- 1 file changed, 51 insertions(+), 39 deletions(-) diff --git a/sbas/models.py b/sbas/models.py index bfb1f79c..e71470b9 100644 --- a/sbas/models.py +++ b/sbas/models.py @@ -17,12 +17,14 @@ import reversion from django.contrib.contenttypes.fields import GenericRelation + class Category(models.Model): category = models.CharField(max_length=200) def __str__(self): return self.category + class Question(models.Model): stem = models.TextField( blank=False, @@ -32,50 +34,40 @@ class Question(models.Model): answer_help_text = "Answer text" BEST_ANSWER_CHOICES = ( - ('a', 'a_answer'), - ('b', 'b_answer'), - ('c', 'c_answer'), - ('d', 'd_answer'), - ('e', 'e_answer'), + ("a", "a_answer"), + ("b", "b_answer"), + ("c", "c_answer"), + ("d", "d_answer"), + ("e", "e_answer"), ) # I doubt this is the best way to structure the model # (but it should work) - a_answer = models.TextField( - help_text=answer_help_text - ) + a_answer = models.TextField(help_text=answer_help_text) a_feedback = models.TextField( blank=True, help_text="Feedback for answer", ) - b_answer = models.TextField( - help_text=answer_help_text - ) + b_answer = models.TextField(help_text=answer_help_text) b_feedback = models.TextField( blank=True, help_text="Feedback for answer", ) - c_answer = models.TextField( - help_text=answer_help_text - ) + c_answer = models.TextField(help_text=answer_help_text) c_feedback = models.TextField( blank=True, help_text="Feedback for answer", ) - d_answer = models.TextField( - help_text=answer_help_text - ) + d_answer = models.TextField(help_text=answer_help_text) d_feedback = models.TextField( blank=True, help_text="Feedback for answer", ) - e_answer = models.TextField( - help_text=answer_help_text - ) + e_answer = models.TextField(help_text=answer_help_text) e_feedback = models.TextField( blank=True, help_text="Feedback for answer", @@ -86,7 +78,9 @@ class Question(models.Model): help_text="General question feedback", ) - best_answer = models.CharField(max_length=20, choices=BEST_ANSWER_CHOICES, help_text="The correct answer") + best_answer = models.CharField( + max_length=20, choices=BEST_ANSWER_CHOICES, help_text="The correct answer" + ) created_date = models.DateTimeField(default=timezone.now) @@ -122,29 +116,38 @@ class Question(models.Model): return reverse("sbas:question_detail", kwargs={"pk": self.pk}) def get_answers(self): - return (self.a_answer, self.b_answer, self.c_answer, self.d_answer, self.e_answer) + return ( + self.a_answer, + self.b_answer, + self.c_answer, + self.d_answer, + self.e_answer, + ) def get_correct_answer(self): - if self.best_answer == "a": return self.a_answer - if self.best_answer == "b": return self.b_answer - if self.best_answer == "c": return self.c_answer - if self.best_answer == "d": return self.d_answer - if self.best_answer == "e": return self.e_answer + if self.best_answer == "a": + return self.a_answer + if self.best_answer == "b": + return self.b_answer + if self.best_answer == "c": + return self.c_answer + if self.best_answer == "d": + return self.d_answer + if self.best_answer == "e": + return self.e_answer def get_correct_answer_stripped(self): - return self.get_correct_answer().replace("

","",1).replace("

","",1) + return self.get_correct_answer().replace("

", "", 1).replace("

", "", 1) def get_stem_stripped(self): - return self.stem.replace("

","",1).replace("

","",1) + return self.stem.replace("

", "", 1).replace("

", "", 1) @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") time_limit = models.IntegerField( help_text="Exam time limit (in seconds)", @@ -154,13 +157,18 @@ class Exam(ExamBase): recreate_json = None - author = models.ManyToManyField(settings.AUTH_USER_MODEL, - blank=True, - help_text='Author of exam', - related_name="sba_exam_author") + author = models.ManyToManyField( + settings.AUTH_USER_MODEL, + blank=True, + help_text="Author of exam", + related_name="sba_exam_author", + ) valid_users = models.ManyToManyField(CidUser, blank=True, related_name="sba_exams") + def get_take_url(self): + return reverse("physics:exam_start", kwargs={"pk": self.pk}) + @reversion.register class CidUserAnswer(models.Model): @@ -169,7 +177,11 @@ class CidUserAnswer(models.Model): question = models.ForeignKey( Question, related_name="cid_user_answers", on_delete=models.CASCADE ) - answer = models.CharField(max_length=20, choices=Question.BEST_ANSWER_CHOICES, help_text="The correct answer") + answer = models.CharField( + max_length=20, + choices=Question.BEST_ANSWER_CHOICES, + help_text="The correct answer", + ) cid = models.IntegerField(blank=True, null=True) @@ -193,4 +205,4 @@ class CidUserAnswer(models.Model): def get_score(self): if self.get_correct(): return 1 - return 0 \ No newline at end of file + return 0