Change submissionfeedback to submission_feedback or submissionFeedback,
respectively
This commit is contained in:
parent
84a69b24f1
commit
89e3925590
|
|
@ -9,8 +9,8 @@
|
||||||
<student-submission-document :document="submission.document" class="entry-document"></student-submission-document>
|
<student-submission-document :document="submission.document" class="entry-document"></student-submission-document>
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<div class="student-submission__feedback entry" v-if="submission.submissionfeedback">
|
<div class="student-submission__feedback entry" v-if="submission.submissionFeedback">
|
||||||
<p class="entry__text" :class="{'entry__text--final': submission.submissionfeedback.final}">{{submission.submissionfeedback.text | trimToLength(50)}}</p>
|
<p class="entry__text" :class="{'entry__text--final': submission.submissionFeedback.final}">{{submission.submissionFeedback.text | trimToLength(50)}}</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
|
||||||
|
|
@ -21,7 +21,7 @@
|
||||||
>
|
>
|
||||||
</submission-form>
|
</submission-form>
|
||||||
|
|
||||||
<div v-if="this.assignment.submission.submissionfeedback" class="assignment__feedback">
|
<div v-if="this.assignment.submission.submissionFeedback" class="assignment__feedback">
|
||||||
<p>{{feedbackText}}</p>
|
<p>{{feedbackText}}</p>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
@ -82,7 +82,7 @@
|
||||||
return this.assignment.id ? this.assignment.id.replace(/=/g, '') : ''
|
return this.assignment.id ? this.assignment.id.replace(/=/g, '') : ''
|
||||||
},
|
},
|
||||||
feedbackText() {
|
feedbackText() {
|
||||||
let feedback = this.assignment.submission.submissionfeedback;
|
let feedback = this.assignment.submission.submissionFeedback;
|
||||||
return `Feedback von ${feedback.teacher.firstName} ${feedback.teacher.lastName}: ${feedback.text}`;
|
return `Feedback von ${feedback.teacher.firstName} ${feedback.teacher.lastName}: ${feedback.text}`;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -19,7 +19,7 @@ query AssignmentWithSubmissions($id: ID!) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
submissionfeedback {
|
submissionFeedback {
|
||||||
id
|
id
|
||||||
text
|
text
|
||||||
final
|
final
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@ fragment AssignmentParts on AssignmentNode {
|
||||||
text
|
text
|
||||||
final
|
final
|
||||||
document
|
document
|
||||||
submissionfeedback {
|
submissionFeedback {
|
||||||
id
|
id
|
||||||
text
|
text
|
||||||
teacher {
|
teacher {
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@ query StudentSubmissions($id: ID!) {
|
||||||
title
|
title
|
||||||
assignment
|
assignment
|
||||||
}
|
}
|
||||||
submissionfeedback {
|
submissionFeedback {
|
||||||
id
|
id
|
||||||
text
|
text
|
||||||
final
|
final
|
||||||
|
|
|
||||||
|
|
@ -62,7 +62,7 @@
|
||||||
return `${this.studentSubmission.student.firstName} ${this.studentSubmission.student.lastName}`
|
return `${this.studentSubmission.student.firstName} ${this.studentSubmission.student.lastName}`
|
||||||
},
|
},
|
||||||
feedback() {
|
feedback() {
|
||||||
return this.studentSubmission.submissionfeedback ? this.studentSubmission.submissionfeedback : {text: '', final: false};
|
return this.studentSubmission.submissionFeedback ? this.studentSubmission.submissionFeedback : {text: '', final: false};
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
@ -92,7 +92,7 @@
|
||||||
input: {
|
input: {
|
||||||
submissionFeedback: {
|
submissionFeedback: {
|
||||||
studentSubmission: this.studentSubmission.id,
|
studentSubmission: this.studentSubmission.id,
|
||||||
text: this.studentSubmission.submissionfeedback.text,
|
text: this.studentSubmission.submissionFeedback.text,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
@ -120,7 +120,7 @@
|
||||||
input: {
|
input: {
|
||||||
submissionFeedback: {
|
submissionFeedback: {
|
||||||
studentSubmission: this.studentSubmission.id,
|
studentSubmission: this.studentSubmission.id,
|
||||||
text: this.studentSubmission.submissionfeedback.text,
|
text: this.studentSubmission.submissionFeedback.text,
|
||||||
final: true
|
final: true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -139,7 +139,7 @@
|
||||||
input: {
|
input: {
|
||||||
submissionFeedback: {
|
submissionFeedback: {
|
||||||
studentSubmission: this.studentSubmission.id,
|
studentSubmission: this.studentSubmission.id,
|
||||||
text: this.studentSubmission.submissionfeedback.text,
|
text: this.studentSubmission.submissionFeedback.text,
|
||||||
final: false
|
final: false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -156,7 +156,7 @@
|
||||||
};
|
};
|
||||||
const data = store.readQuery({query, variables});
|
const data = store.readQuery({query, variables});
|
||||||
|
|
||||||
data.studentSubmission.submissionfeedback = Object.assign({}, updatedSubmissionFeedback);
|
data.studentSubmission.submissionFeedback = Object.assign({}, updatedSubmissionFeedback);
|
||||||
store.writeQuery({query, variables, data});
|
store.writeQuery({query, variables, data});
|
||||||
}
|
}
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
|
|
@ -166,7 +166,7 @@
|
||||||
},
|
},
|
||||||
updateFeedbackText(text) {
|
updateFeedbackText(text) {
|
||||||
this.studentSubmission = Object.assign({}, this.studentSubmission, {
|
this.studentSubmission = Object.assign({}, this.studentSubmission, {
|
||||||
submissionfeedback: Object.assign({}, this.studentSubmission.submissionfeedback, {text: text})
|
submissionFeedback: Object.assign({}, this.studentSubmission.submissionFeedback, {text: text})
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
@ -183,7 +183,7 @@
|
||||||
},
|
},
|
||||||
text: '',
|
text: '',
|
||||||
document: '',
|
document: '',
|
||||||
submissionfeedback: {
|
submissionFeedback: {
|
||||||
text: '',
|
text: '',
|
||||||
final: false
|
final: false
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -42,6 +42,6 @@ class StudentSubmission(TimeStampedModel):
|
||||||
class SubmissionFeedback(TimeStampedModel):
|
class SubmissionFeedback(TimeStampedModel):
|
||||||
text = models.TextField(blank=True)
|
text = models.TextField(blank=True)
|
||||||
teacher = models.ForeignKey(get_user_model(), on_delete=models.CASCADE, related_name='feedbacks')
|
teacher = models.ForeignKey(get_user_model(), on_delete=models.CASCADE, related_name='feedbacks')
|
||||||
student_submission = models.OneToOneField(StudentSubmission, on_delete=models.CASCADE, primary_key=True)
|
student_submission = models.OneToOneField(StudentSubmission, on_delete=models.CASCADE, primary_key=True, related_name='submission_feedback')
|
||||||
final = models.BooleanField(default=False)
|
final = models.BooleanField(default=False)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -15,31 +15,31 @@ class SubmissionFeedbackNode(DjangoObjectType):
|
||||||
|
|
||||||
|
|
||||||
class StudentSubmissionNode(DjangoObjectType):
|
class StudentSubmissionNode(DjangoObjectType):
|
||||||
submissionfeedback = graphene.Field(SubmissionFeedbackNode)
|
submission_feedback = graphene.Field(SubmissionFeedbackNode)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = StudentSubmission
|
model = StudentSubmission
|
||||||
filter_fields = []
|
filter_fields = []
|
||||||
interfaces = (relay.Node,)
|
interfaces = (relay.Node,)
|
||||||
|
|
||||||
def resolve_submissionfeedback(self, info, **kwargs):
|
def resolve_submission_feedback(self, info, **kwargs):
|
||||||
|
|
||||||
user = info.context.user
|
user = info.context.user
|
||||||
|
|
||||||
if not hasattr(self, 'submissionfeedback'):
|
if not hasattr(self, 'submission_feedback'):
|
||||||
return None
|
return None
|
||||||
|
|
||||||
# teacher path
|
# teacher path
|
||||||
if user.has_perm('users.can_manage_school_class_content'):
|
if user.has_perm('users.can_manage_school_class_content'):
|
||||||
if self.submissionfeedback.teacher == user:
|
if self.submission_feedback.teacher == user:
|
||||||
return self.submissionfeedback
|
return self.submission_feedback
|
||||||
else:
|
else:
|
||||||
raise PermissionDenied('Missing permissions')
|
raise PermissionDenied('Missing permissions')
|
||||||
|
|
||||||
# student path
|
# student path
|
||||||
|
|
||||||
if self.submissionfeedback.final:
|
if self.submission_feedback.final:
|
||||||
return self.submissionfeedback
|
return self.submission_feedback
|
||||||
|
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -68,7 +68,7 @@ class SubmissionFeedbackTestCase(DefaultUserTestCase):
|
||||||
id
|
id
|
||||||
text
|
text
|
||||||
document
|
document
|
||||||
submissionfeedback {
|
submission_feedback {
|
||||||
text
|
text
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -89,7 +89,7 @@ class SubmissionFeedbackTestCase(DefaultUserTestCase):
|
||||||
id
|
id
|
||||||
text
|
text
|
||||||
document
|
document
|
||||||
submissionfeedback {
|
submission_feedback {
|
||||||
text
|
text
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -110,7 +110,7 @@ class SubmissionFeedbackTestCase(DefaultUserTestCase):
|
||||||
id
|
id
|
||||||
text
|
text
|
||||||
document
|
document
|
||||||
submissionfeedback {
|
submission_feedback {
|
||||||
text
|
text
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -173,14 +173,14 @@ class SubmissionFeedbackTestCase(DefaultUserTestCase):
|
||||||
SubmissionFeedbackFactory(teacher=self.teacher, final=False, student_submission=self.student_submission)
|
SubmissionFeedbackFactory(teacher=self.teacher, final=False, student_submission=self.student_submission)
|
||||||
result = self._fetch_assignment_student(self.student1)
|
result = self._fetch_assignment_student(self.student1)
|
||||||
|
|
||||||
self.assertIsNone(result.get('data').get('submissionfeedback'))
|
self.assertIsNone(result.get('data').get('submission_feedback'))
|
||||||
|
|
||||||
def test_student_does_see_final_feedback(self):
|
def test_student_does_see_final_feedback(self):
|
||||||
|
|
||||||
submission_feedback = SubmissionFeedbackFactory(teacher=self.teacher, final=True,
|
submission_feedback = SubmissionFeedbackFactory(teacher=self.teacher, final=True,
|
||||||
student_submission=self.student_submission)
|
student_submission=self.student_submission)
|
||||||
result = self._fetch_assignment_student(self.student1)
|
result = self._fetch_assignment_student(self.student1)
|
||||||
self.assertEqual(result.get('data').get('assignment').get('submission').get('submissionfeedback')
|
self.assertEqual(result.get('data').get('assignment').get('submission').get('submission_feedback')
|
||||||
.get('text'), submission_feedback.text)
|
.get('text'), submission_feedback.text)
|
||||||
|
|
||||||
def test_teacher_can_see_feedback_for_submission(self):
|
def test_teacher_can_see_feedback_for_submission(self):
|
||||||
|
|
@ -190,7 +190,7 @@ class SubmissionFeedbackTestCase(DefaultUserTestCase):
|
||||||
self.student_submission.save()
|
self.student_submission.save()
|
||||||
|
|
||||||
result = self._fetch_assignment_teacher(self.teacher)
|
result = self._fetch_assignment_teacher(self.teacher)
|
||||||
self.assertEqual(result.get('data').get('assignment').get('submissions')[0].get('submissionfeedback')
|
self.assertEqual(result.get('data').get('assignment').get('submissions')[0].get('submission_feedback')
|
||||||
.get('text'), submission_feedback.text)
|
.get('text'), submission_feedback.text)
|
||||||
|
|
||||||
def test_rogue_teacher_cannot_see_feedback(self):
|
def test_rogue_teacher_cannot_see_feedback(self):
|
||||||
|
|
@ -200,4 +200,4 @@ class SubmissionFeedbackTestCase(DefaultUserTestCase):
|
||||||
self.student_submission.save()
|
self.student_submission.save()
|
||||||
|
|
||||||
result = self._fetch_assignment_teacher(self.teacher2)
|
result = self._fetch_assignment_teacher(self.teacher2)
|
||||||
self.assertIsNone(result.get('data').get('assignment').get('submissions')[0].get('submissionfeedback'))
|
self.assertIsNone(result.get('data').get('assignment').get('submissions')[0].get('submission_feedback'))
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue