From ecec97a4116607364232183e293c7336f91504db Mon Sep 17 00:00:00 2001 From: Ramon Wenger Date: Tue, 17 Nov 2020 14:03:10 +0100 Subject: [PATCH] Fix vanishing text bug on submission feedback --- client/src/pages/studentSubmission.vue | 30 +++++++++++++++++++++----- server/assignments/admin.py | 6 +++++- server/assignments/models.py | 4 ++++ 3 files changed, 34 insertions(+), 6 deletions(-) diff --git a/client/src/pages/studentSubmission.vue b/client/src/pages/studentSubmission.vue index 0143fd78..caa8747f 100644 --- a/client/src/pages/studentSubmission.vue +++ b/client/src/pages/studentSubmission.vue @@ -112,6 +112,9 @@ }; }, result({data: {studentSubmission}}) { + if (!studentSubmission.submissionFeedback) { // create something for the cache to find + this.create(); + } this.studentSubmission = cloneDeep(studentSubmission); // we don't want to update the value when the server updates } }; @@ -152,6 +155,21 @@ this.updateFeedbackText(feedbackText); this._save(); }, + create() { + this.$apollo.mutate({ + mutation: UPDATE_FEEDBACK_WITH_TEXT_MUTATION, + variables: { + input: { + submissionFeedback: { + studentSubmission: this.studentSubmission.id, + text: '', + final: false + } + } + }, + update: this.updateCache + }); + }, turnIn() { this.$apollo.mutate({ mutation: UPDATE_FEEDBACK_WITH_TEXT_MUTATION, @@ -195,12 +213,14 @@ }; const data = store.readQuery({query, variables}); - data.studentSubmission.submissionFeedback = Object.assign({}, data.studentSubmission.submissionFeedback, { - id: updatedSubmissionFeedback.id, - final: updatedSubmissionFeedback.final - }); + if (data) { + data.studentSubmission.submissionFeedback = Object.assign({}, data.studentSubmission.submissionFeedback, { + id: updatedSubmissionFeedback.id, + final: updatedSubmissionFeedback.final + }); - store.writeQuery({query, variables, data}); + store.writeQuery({query, variables, data}); + } } } catch (e) { console.error(e); diff --git a/server/assignments/admin.py b/server/assignments/admin.py index 70a6a317..5f0774f7 100644 --- a/server/assignments/admin.py +++ b/server/assignments/admin.py @@ -1,7 +1,7 @@ from django.contrib import admin # Register your models here. -from assignments.models import Assignment, StudentSubmission +from assignments.models import Assignment, StudentSubmission, SubmissionFeedback @admin.register(Assignment) @@ -13,3 +13,7 @@ class AssignmentAdmin(admin.ModelAdmin): class StudentSubmissionAdmin(admin.ModelAdmin): pass +@admin.register(SubmissionFeedback) +class SubmissionFeedbackAdmin(admin.ModelAdmin): + pass + diff --git a/server/assignments/models.py b/server/assignments/models.py index f2455f3c..1ef64be8 100644 --- a/server/assignments/models.py +++ b/server/assignments/models.py @@ -46,3 +46,7 @@ class SubmissionFeedback(TimeStampedModel): student_submission = models.OneToOneField(StudentSubmission, on_delete=models.CASCADE, primary_key=True, related_name='submission_feedback') final = models.BooleanField(default=False) + def __str__(self): + return '{} - {}'.format(self.student_submission.student.full_name, self.text) + +