コード例 #1
0
ファイル: submission_id.py プロジェクト: doutianye/hwcentral
    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())
コード例 #2
0
ファイル: submission_id.py プロジェクト: doutianye/hwcentral
 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
コード例 #3
0
ファイル: submission_id.py プロジェクト: doutianye/hwcentral
 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
コード例 #4
0
ファイル: submission_id.py プロジェクト: doutianye/hwcentral
 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())
コード例 #5
0
ファイル: grader_api.py プロジェクト: doutianye/hwcentral
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)
コード例 #6
0
ファイル: submission_id.py プロジェクト: doutianye/hwcentral
 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())
コード例 #7
0
ファイル: submission_id.py プロジェクト: doutianye/hwcentral
    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())