From 4794d1d1a71d218eb7496e00bcdcf5302503b12b Mon Sep 17 00:00:00 2001 From: charliemirabile <46761267+charliemirabile@users.noreply.github.com> Date: Sun, 22 Sep 2024 21:34:21 -0400 Subject: [PATCH 1/2] denis: initial: update query to reflect new schema the assignment field in the submissions table no longer exists having been replaced by recipient to accomodate peer reviews. Fixes: 60d73a7 ("mailman: unify all submissions under common table for dashboard") --- denis/initial.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/denis/initial.py b/denis/initial.py index 706173e0..5717f03e 100755 --- a/denis/initial.py +++ b/denis/initial.py @@ -111,7 +111,7 @@ def generate_peer_review_email(assignment, review_table): students_who_submitted = [user.username for user in orbit.db.User.select() if mailman.db.Submission.get_or_none((mailman.db.Submission.user == user.username) & # NOQA: E501 - (mailman.db.Submission.assignment == assignment)) is not None] # NOQA: E501 + (mailman.db.Submission.recipient == assignment)) is not None] # NOQA: E501 # let them see emails that have been sent since last final due date for student in students_who_submitted: From d6f2e253a572a0417ae3012a0bf5b87393e999d6 Mon Sep 17 00:00:00 2001 From: charliemirabile <46761267+charliemirabile@users.noreply.github.com> Date: Sun, 22 Sep 2024 22:51:10 -0400 Subject: [PATCH 2/2] denis: initial/db: handle < 3 students completing assignment The schema needs to be able to handle one or both of the reviwees being null, and the code that inserts into the DB needs to account for lists that are not exactly 3 elements long. Fixes: 86353ae ("denis: record peer reveiew assignments") --- denis/db.py | 4 ++-- denis/initial.py | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/denis/db.py b/denis/db.py index 0407269b..7dcf00ac 100755 --- a/denis/db.py +++ b/denis/db.py @@ -20,8 +20,8 @@ class Assignment(BaseModel): class PeerReviewAssignment(BaseModel): assignment = peewee.TextField() reviewer = peewee.TextField() - reviewee1 = peewee.TextField() - reviewee2 = peewee.TextField() + reviewee1 = peewee.TextField(null=True) + reviewee2 = peewee.TextField(null=True) class Meta: indexes = ((('assignment', 'reviewer'), True),) diff --git a/denis/initial.py b/denis/initial.py index 5717f03e..a5906205 100755 --- a/denis/initial.py +++ b/denis/initial.py @@ -142,9 +142,9 @@ def generate_peer_review_email(assignment, review_table): db.PeerReviewAssignment.insert_many( [{'assignment': assignment, 'reviewer': reviewer, - 'reviewee1': reviewee1, - 'reviewee2': reviewee2} - for (reviewer, reviewee1, reviewee2) in reviews]).execute() + 'reviewee1': reviewees[0] if len(reviewees) >= 1 else None, + 'reviewee2': reviewees[1] if len(reviewees) >= 2 else None} + for [reviewer, *reviewees] in reviews]).execute() except db.peewee.IntegrityError as e: print(e)