def student_endpoint(self): if not self.student_valid(): raise Http404 if not self.submission.revised: return render( self.request, UrlNames.SUBMISSION_ID.get_template('revision'), AuthenticatedVM( self.user, RevisionSubmissionIdBody( self.user, self.submission, AssignmentInfo.CAT_DUE)).as_context()) # we can assume at this point that a shell submission exists at the very least # get the submission data from the cabinet submission_dm = cabinet_api.get_submission(self.submission) # get a 'protected' version of the submission data (without solutions and targets) submission_vm = SubmissionVMProtected(submission_dm) # build the submission form using the submission data submission_form = SubmissionForm(submission_vm, True) return render( self.request, self.template, AuthenticatedVM( self.user, UncorrectedSubmissionIdBody( self.user, submission_form, self.submission, AssignmentInfo.CAT_DUE)).as_context())
def __init__(self, request, submission): super(SubmissionIdGetCorrected, self).__init__(request, submission) assert not is_student_assignment(submission.assignment) self.type = HWCentralAssignmentType.CORRECTED self.submission_vm = SubmissionVMUnprotected( cabinet_api.get_submission(submission)) self.categorization = AssignmentInfo.CAT_DUE
def process_form(self): # we can assume at this point that a shell submission exists at the very least # get the submission data from the cabinet submission_dm = cabinet_api.get_submission(self.submission) submission_vm = SubmissionVMProtected(submission_dm) submission_form = SubmissionForm(submission_vm, False, self.request.POST) return submission_dm, submission_form
def render_corrected_submission(self, categorization): submission_vm = SubmissionVMUnprotected( cabinet_api.get_submission(self.submission)) return render( self.request, self.template, AuthenticatedVM( self.user, CorrectedSubmissionIdBodySubmissionUser( self.user, self.submission, submission_vm, categorization)).as_context())
def grade(submission, register_ticks): submission_dm = cabinet_api.get_submission(submission) assert len(submission_dm.questions) == len(submission_dm.answers) # update the database object with marks - submission submission.marks = perform_correction(submission, submission_dm, register_ticks) submission.save() # update the submission in cabinet cabinet_api.update_submission(submission, submission_dm)
def render_uncorrected_submission(self, categorization): # we can assume at this point that a shell submission exists at the very least # get the submission data from the cabinet submission_dm = cabinet_api.get_submission(self.submission) # get a 'protected' version of the submission data (without solutions and targets) submission_vm = SubmissionVMProtected(submission_dm) # build the submission form using the submission data submission_form = SubmissionForm(submission_vm, True) return render( self.request, self.template, AuthenticatedVM( self.user, UncorrectedSubmissionIdBody(self.user, submission_form, self.submission, categorization)).as_context())
def student_endpoint(self): if not self.student_valid(): raise Http404 if not self.submission.revised: # make sure that the revised flag is POSTed return handle_unrevised_post(self.request, self.submission) # we can assume at this point that a shell submission exists at the very least # get the submission data from the cabinet submission_dm = cabinet_api.get_submission(self.submission) submission_vm = SubmissionVMProtected(submission_dm) submission_form = SubmissionForm(submission_vm, False, self.request.POST) if submission_form.is_valid(): # update the submission data with the form data submission_dm.update_answers(submission_form.get_answers()) # update the submission data in cabinet cabinet_api.update_submission(self.submission, submission_dm) # update the submisssion in db self.submission.timestamp = django.utils.timezone.now() self.submission.completion = submission_dm.calculate_completion() self.submission.save() renderer = render_with_success_toast message = "Your submission has been saved." else: renderer = render_with_error_toast message = 'Some of the answers were invalid. Please fix the errors below and try again.' return renderer( self.request, message, self.template, AuthenticatedVM( self.user, UncorrectedSubmissionIdBody( self.user, submission_form, self.submission, AssignmentInfo.CAT_DUE)).as_context())