Make the student submissions changeable by any teacher
Resolves MS-520
This commit is contained in:
parent
a25736ab45
commit
0eba96fd5e
|
|
@ -52,6 +52,7 @@ class StudentSubmission(TimeStampedModel):
|
|||
|
||||
class SubmissionFeedback(TimeStampedModel):
|
||||
text = models.TextField(blank=True)
|
||||
# teacher who created the feedback
|
||||
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,
|
||||
related_name='submission_feedback')
|
||||
|
|
|
|||
|
|
@ -58,18 +58,19 @@ class UpdateSubmissionFeedback(relay.ClientIDMutation):
|
|||
user = info.context.user
|
||||
student_submission_id = from_global_id(submission_feedback_data['student_submission'])[1]
|
||||
|
||||
if not user.has_perm('users.can_manage_school_class_content'):
|
||||
if not user.is_teacher():
|
||||
raise PermissionDenied('Missing permissions')
|
||||
|
||||
# todo: replace with middleware
|
||||
if user.read_only:
|
||||
raise PermissionError('No valid license')
|
||||
|
||||
(submission_feedback, created) = SubmissionFeedback.objects.get_or_create(teacher=user,
|
||||
student_submission_id=student_submission_id)
|
||||
(submission_feedback, created) = SubmissionFeedback.objects.get_or_create(student_submission_id=student_submission_id)
|
||||
|
||||
|
||||
final = submission_feedback_data.get('final') if 'final' in submission_feedback_data else submission_feedback.final
|
||||
|
||||
submission_feedback.teacher = user
|
||||
submission_feedback.final = final
|
||||
submission_feedback.text = submission_feedback_data.get('text')
|
||||
submission_feedback.save()
|
||||
|
|
|
|||
|
|
@ -23,21 +23,16 @@ class StudentSubmissionNode(DjangoObjectType):
|
|||
interfaces = (relay.Node,)
|
||||
|
||||
def resolve_submission_feedback(self, info, **kwargs):
|
||||
|
||||
user = info.context.user
|
||||
|
||||
if not hasattr(self, 'submission_feedback'):
|
||||
return None
|
||||
|
||||
# teacher path
|
||||
if user.has_perm('users.can_manage_school_class_content'):
|
||||
if self.submission_feedback.teacher == user:
|
||||
return self.submission_feedback
|
||||
else:
|
||||
raise PermissionDenied('Missing permissions')
|
||||
if user.is_teacher():
|
||||
return self.submission_feedback
|
||||
|
||||
# student path
|
||||
|
||||
if self.submission_feedback.final:
|
||||
return self.submission_feedback
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue