コード例 #1
0
def createSubmissionFile():
    with NamedTemporaryFile(mode="wt",
                            delete=False,
                            prefix=settings.MEDIA_ROOT) as tmpfile:
        # Submission file
        tmpfile.write("The quick brown fox jumps over the lazy dog.")
        tmpfile.close()
        sf = SubmissionFile(attachment=DjangoFile(tmpfile.name))
        sf.save()
        # os.remove(tmpfile.name)
        # Test results
        val_result = SubmissionTestResult()
        val_result.submission_file = sf
        val_result.kind = SubmissionTestResult.VALIDITY_TEST
        val_result.result = "Validation test result for student"
        val_result.result_tutor = "Validation test result for tutor"
        val_result.machine = machine
        val_result.save()
        full_result = SubmissionTestResult()
        full_result.submission_file = sf
        full_result.kind = SubmissionTestResult.FULL_TEST
        full_result.result_tutor = "Full test result for tutor"
        full_result.machine = machine
        full_result.save()
        return sf
コード例 #2
0
 def createNoArchiveSubmissionFile(
         self, relpath="/opensubmit/tests/submfiles/noarchive.txt"):
     fname = relpath[relpath.rfind(os.sep) + 1:]
     shutil.copyfile(rootdir + relpath, settings.MEDIA_ROOT + fname)
     sf = SubmissionFile(
         attachment=DjangoFile(open(settings.MEDIA_ROOT +
                                    fname), unicode(fname)))
     sf.save()
     return sf
コード例 #3
0
 def createSubmissionFile(
         self,
         relpath="/opensubmit/tests/submfiles/working_withsubdir.zip"):
     fname = relpath[relpath.rfind(os.sep) + 1:]
     shutil.copyfile(rootdir + relpath, settings.MEDIA_ROOT + fname)
     sf = SubmissionFile(
         attachment=DjangoFile(open(rootdir + relpath), unicode(fname)))
     sf.save()
     return sf
コード例 #4
0
 def createCompileBrokenSubmissionFile(
         self,
         relpath="/opensubmit/tests/submfiles/reverse_submission.zip"):
     fname = relpath[relpath.rfind(os.sep) + 1:]
     shutil.copyfile(rootdir + relpath, settings.MEDIA_ROOT + fname)
     sf = SubmissionFile(
         attachment=DjangoFile(open(settings.MEDIA_ROOT +
                                    fname), unicode(fname)))
     sf.save()
     return sf
コード例 #5
0
def create_submission_file(relpath="/submfiles/validation/1000ttt/packed.tgz"):
    '''
    Several test cases assume a packed submission with subdirs,
    so the default above is intentional.
    '''
    with open(rootdir + relpath, 'rb') as subfile:
        sf = SubmissionFile(
            attachment=DjangoFile(subfile, str(datetime.datetime.now())),
            original_filename=os.path.basename(relpath)
        )
        sf.save()
    return sf
コード例 #6
0
 def testPreviewBrokenView(self):
     '''
         Test proper handling of archives containing files with invalid unicode.
     '''
     sub1 = self.createValidatedSubmission(self.current_user)
     for fname in [u'broken_preview.gz', u'broken_preview2.gz', u'broken_preview.zip']:
         f=File(open(u"opensubmit/tests/submfiles/"+fname), fname)
         subfile = SubmissionFile()
         subfile.attachment=f
         subfile.save()
         sub1.file_upload=subfile
         sub1.save()
         response=self.c.get('/preview/%u/'%sub1.pk)
         self.assertEquals(response.status_code, 200)
コード例 #7
0
 def form_valid(self, form):
     upload_file = self.request.FILES['attachment']
     new_file = SubmissionFile(attachment=form.files['attachment'],
                               original_filename=upload_file.name)
     new_file.save()
     # fix status of old uploaded file
     self.object.file_upload.replaced_by = new_file
     self.object.file_upload.save()
     # store new file for submissions
     self.object.file_upload = new_file
     self.object.state = self.object.get_initial_state()
     self.object.notes = form.data['notes']
     self.object.save()
     messages.info(self.request, 'Submission files successfully updated.')
     return super().form_valid(form)
コード例 #8
0
 def post(self, request, *args, **kwargs):
     # we need to fill all forms here,
     # so that they can be rendered on validation errors
     submissionForm = self.SubmissionForm(request.user, self.ass,
                                          request.POST, request.FILES)
     if submissionForm.is_valid():
         # commit=False to set submitter in the instance
         submission = submissionForm.save(commit=False)
         submission.submitter = request.user
         submission.assignment = self.ass
         submission.state = submission.get_initial_state()
         # take uploaded file from extra field
         if self.ass.has_attachment:
             upload_file = request.FILES['attachment']
             submissionFile = SubmissionFile(
                 attachment=submissionForm.cleaned_data['attachment'],
                 original_filename=upload_file.name)
             submissionFile.save()
             submission.file_upload = submissionFile
         submission.save()
         # because of commit=False, we first need to add
         # the form-given authors
         submissionForm.save_m2m()
         submission.save()
         messages.info(request, "New submission saved.")
         if submission.state == Submission.SUBMITTED:
             # Initial state is SUBMITTED,
             # which means that there is no validation
             if not submission.assignment.is_graded():
                 # No validation, no grading. We are done.
                 submission.state = Submission.CLOSED
                 submission.save()
         return redirect(self.redirect_on_success)
     else:
         messages.error(request,
                        "Please correct your submission information.")
         return render(request, self.template_name, {
             'submissionForm': submissionForm,
             'assignment': self.ass
         })
コード例 #9
0
ファイル: cases.py プロジェクト: thehappyhippo/opensubmit
 def createSubmissionFile(self):
     from django.core.files import File as DjangoFile
     sf = SubmissionFile(attachment=DjangoFile(open(rootdir+"/opensubmit/tests/submfiles/working_withsubdir.zip"), unicode("working_withsubdir.zip")))
     sf.save()  
     return sf