def uploadAssignment(req, courseId, assignmentId, archiveFile): """ Saves a temp file of the uploaded archive and calls vmchecker.submit.submit method to put the homework in the testing queue""" # Check permission req.content_type = 'text/html' s = Session.Session(req) if s.is_new(): s.invalidate() return json.dumps({'errorType':ERR_AUTH, 'errorMessage':"", 'errorTrace':""}) strout = websutil.OutputString() try: s.load() username = s['username'] except: traceback.print_exc(file = strout) return json.dumps({'errorType':ERR_EXCEPTION, 'errorMessage':"", 'errorTrace':strout.get()}) # Reset the timeout s.save() if archiveFile.filename == None: return json.dumps({'errorType':ERR_OTHER, 'errorMessage':"File not uploaded.", 'errorTrace':""}) # Save file in a temp (fd, tmpname) = tempfile.mkstemp('.zip') f = open(tmpname, 'wb', 10000) ## Read the file in chunks for chunk in websutil.fbuffer(archiveFile.file): f.write(chunk) f.close() os.close(fd) # Call submit.py ## Redirect stdout to catch logging messages from submit strout = websutil.OutputString() sys.stdout = strout try: submit.submit(tmpname, assignmentId, username, courseId) except submit.SubmittedTooSoonError: traceback.print_exc(file = strout) return json.dumps({'errorType':ERR_EXCEPTION, 'errorMessage':"Tema trimisa prea curand", 'errorTrace':strout.get()}) except: traceback.print_exc(file = strout) return json.dumps({'errorType':ERR_EXCEPTION, 'errorMessage':"", 'errorTrace':strout.get()}) return json.dumps({'status':True, 'dumpLog':strout.get()})
def uploadAssignment(username, courseId, assignmentId, archiveFile): strout = websutil.OutputString() if archiveFile.filename == None: return json.dumps({'errorType':ERR_OTHER, 'errorMessage':"File not uploaded.", 'errorTrace':""}) # Save file in a temp (fd, tmpname) = tempfile.mkstemp('.zip') f = open(tmpname, 'wb', 10000) ## Read the file in chunks for chunk in websutil.fbuffer(archiveFile.file): f.write(chunk) f.close() os.close(fd) # Call submit.py ## Redirect stdout to catch logging messages from submit strout = websutil.OutputString() sys.stdout = strout try: submit.submit(tmpname, assignmentId, username, courseId) except submit.SubmittedTooSoonError: traceback.print_exc(file = strout) return json.dumps({'errorType':ERR_EXCEPTION, 'errorMessage':"Tema trimisa prea curand", 'errorTrace':strout.get()}) except: traceback.print_exc(file = strout) return json.dumps({'errorType':ERR_EXCEPTION, 'errorMessage':"", 'errorTrace':strout.get()}) return json.dumps({'status':True, 'dumpLog':strout.get()})
def uploadAssignmentMd5(username, courseId, assignmentId, md5Sum): strout = websutil.OutputString() # Save file in a temp (fd, tmpname) = tempfile.mkstemp('.txt') with open(tmpname, 'wb', 10000) as f: f.write(md5Sum) os.close(fd) # Call submit.py ## Redirect stdout to catch logging messages from submit strout = websutil.OutputString() sys.stdout = strout try: submit.submit(tmpname, assignmentId, username, courseId) except submit.SubmittedTooSoonError: traceback.print_exc(file = strout) return json.dumps({'errorType':ERR_EXCEPTION, 'errorMessage':"Tema trimisa prea curand", 'errorTrace':strout.get()}) except: traceback.print_exc(file = strout) return json.dumps({'errorType':ERR_EXCEPTION, 'errorMessage':"", 'errorTrace':strout.get()}) return json.dumps({'status':True, 'dumpLog':strout.get()})
def uploadAssignmentMd5(req, courseId, assignmentId, md5Sum): """ Saves a temp file of the uploaded archive and calls vmchecker.submit.submit method to put the homework in the testing queue""" # Check permission req.content_type = 'text/html' s = Session.Session(req) if s.is_new(): s.invalidate() return json.dumps({'errorType':ERR_AUTH, 'errorMessage':"", 'errorTrace':""}) strout = websutil.OutputString() try: s.load() username = s['username'] except: traceback.print_exc(file = strout) return json.dumps({'errorType':ERR_EXCEPTION, 'errorMessage':"", 'errorTrace':strout.get()}) # Reset the timeout s.save() # Save file in a temp (fd, tmpname) = tempfile.mkstemp('.txt') with open(tmpname, 'wb', 10000) as f: f.write(md5Sum) os.close(fd) # Call submit.py ## Redirect stdout to catch logging messages from submit strout = websutil.OutputString() sys.stdout = strout try: submit.submit(tmpname, assignmentId, username, courseId) update_db.update_grades(courseId, user=username, assignment=assignmentId) except submit.SubmittedTooSoonError: traceback.print_exc(file = strout) return json.dumps({'errorType':ERR_EXCEPTION, 'errorMessage':"Tema trimisa prea curand", 'errorTrace':strout.get()}) except: traceback.print_exc(file = strout) return json.dumps({'errorType':ERR_EXCEPTION, 'errorMessage':"", 'errorTrace':strout.get()}) return json.dumps({'status':True, 'dumpLog':strout.get()})
def uploadAssignment(req, courseId, assignmentId, archiveFile): """ Saves a temp file of the uploaded archive and calls vmchecker.submit.submit method to put the homework in the testing queue""" # Check permission req.content_type = "text/html" s = Session.Session(req) if s.is_new(): s.invalidate() return json.dumps({"errorType": ERR_AUTH, "errorMessage": "", "errorTrace": ""}) strout = websutil.OutputString() try: s.load() username = s["username"] except: traceback.print_exc(file=strout) return json.dumps({"errorType": ERR_EXCEPTION, "errorMessage": "", "errorTrace": strout.get()}) # Reset the timeout s.save() if archiveFile.filename == None: return json.dumps({"errorType": ERR_OTHER, "errorMessage": "File not uploaded.", "errorTrace": ""}) # Save file in a temp fd, tmpname = tempfile.mkstemp(".zip") f = open(tmpname, "wb", 10000) ## Read the file in chunks for chunk in websutil.fbuffer(archiveFile.file): f.write(chunk) f.close() # Call submit.py ## Redirect stdout to catch logging messages from submit strout = websutil.OutputString() sys.stdout = strout try: submit.submit(tmpname, assignmentId, username, courseId) except: traceback.print_exc(file=strout) return json.dumps({"errorType": ERR_EXCEPTION, "errorMessage": "", "errorTrace": strout.get()}) return json.dumps({"status": True, "dumpLog": strout.get()})
def uploadAssignment(req, courseId, assignmentId, archiveFile, locale=websutil.DEFAULT_LOCALE): """ Saves a temp file of the uploaded archive and calls vmchecker.submit.submit method to put the homework in the testing queue""" websutil.install_i18n(websutil.sanityCheckLocale(locale)) websutil.sanityCheckAssignmentId(assignmentId) websutil.sanityCheckCourseId(courseId) # Check permission req.content_type = 'text/html' s = Session.Session(req) if s.is_new(): s.invalidate() return json.dumps({'errorType':websutil.ERR_AUTH, 'errorMessage':"", 'errorTrace':""}) strout = websutil.OutputString() try: s.load() username = s['username'] except: traceback.print_exc(file = strout) return json.dumps({'errorType':websutil.ERR_EXCEPTION, 'errorMessage':"", 'errorTrace':strout.get()}) # Reset the timeout s.save() if archiveFile.filename == None: return json.dumps({'errorType':websutil.ERR_OTHER, 'errorMessage':_("File not uploaded."), 'errorTrace':""}) # Save file in a temp (fd, tmpname) = tempfile.mkstemp('.zip') f = open(tmpname, 'wb', 10000) ## Read the file in chunks for chunk in websutil.fbuffer(archiveFile.file): f.write(chunk) f.close() os.close(fd) # Call submit.py ## Redirect stdout to catch logging messages from submit sys.stdout = strout (hasTeam, account) = websutil.getAssignmentAccountName(courseId, assignmentId, username, strout) try: if hasTeam: submit.submit(tmpname, assignmentId, account, courseId, user = username) else: submit.submit(tmpname, assignmentId, account, courseId) update_db.update_grades(courseId, account, assignment = assignmentId) except submit.SubmittedTooSoonError: traceback.print_exc(file = strout) return json.dumps({'errorType':websutil.ERR_EXCEPTION, 'errorMessage':_("The assignment was submitted too soon"), 'errorTrace':strout.get()}) except submit.SubmittedTooLateError: traceback.print_exc(file = strout) return json.dumps({'errorType':websutil.ERR_EXCEPTION, 'errorMessage':_("The assignment was submitted too late"), 'errorTrace':strout.get()}) except: traceback.print_exc(file = strout) return json.dumps({'errorType':websutil.ERR_EXCEPTION, 'errorMessage':"", 'errorTrace':strout.get()}) return json.dumps({'status':True, 'dumpLog':strout.get(), 'file': tmpname})
def uploadedFile(req, courseId, assignmentId, tmpname, locale=websutil.DEFAULT_LOCALE): """ Saves a temp file of the uploaded archive and calls vmchecker.submit.submit method to put the homework in the testing queue""" websutil.install_i18n(websutil.sanityCheckLocale(locale)) websutil.sanityCheckAssignmentId(assignmentId) websutil.sanityCheckCourseId(courseId) # TODO a better check is needed for tmpname websutil.sanityCheckDotDot(tmpname) # Check permission req.content_type = 'text/html' s = Session.Session(req) if s.is_new(): s.invalidate() return json.dumps({'errorType':websutil.ERR_AUTH, 'errorMessage':"", 'errorTrace':""}) strout = websutil.OutputString() try: s.load() username = s['username'] except: traceback.print_exc(file = strout) return json.dumps({'errorType':websutil.ERR_EXCEPTION, 'errorMessage':"", 'errorTrace':strout.get()}) # Reset the timeout s.save() # Call submit.py ## Redirect stdout to catch logging messages from submit sys.stdout = strout (hasTeam, account) = websutil.getAssignmentAccountName(courseId, assignmentId, username, strout) try: if hasTeam: submit.submit(tmpname, assignmentId, account, courseId, user = username) else: submit.submit(tmpname, assignmentId, account, courseId) update_db.update_grades(courseId, account, assignment = assignmentId) except submit.SubmittedTooSoonError: traceback.print_exc(file = strout) return json.dumps({'errorType':websutil.ERR_EXCEPTION, 'errorMessage':_("Sent too fast"), 'errorTrace':strout.get()}) except submit.SubmittedTooLateError: traceback.print_exc(file = strout) return json.dumps({'errorType':websutil.ERR_EXCEPTION, 'errorMessage':_("The assignment was submitted too late"), 'errorTrace':strout.get()}) except: traceback.print_exc(file = strout) return json.dumps({'errorType':websutil.ERR_EXCEPTION, 'errorMessage':"", 'errorTrace':strout.get()}) return json.dumps({'status':True, 'dumpLog':strout.get()})
def uploadAssignment(req, courseId, assignmentId, archiveFile): """ Saves a temp file of the uploaded archive and calls vmchecker.submit.submit method to put the homework in the testing queue""" # Check permission req.content_type = 'text/html' s = Session.Session(req) if s.is_new(): s.invalidate() return json.dumps({'errorType':ERR_AUTH, 'errorMessage':"", 'errorTrace':""}) strout = websutil.OutputString() try: s.load() username = s['username'] except: traceback.print_exc(file = strout) return json.dumps({'errorType':ERR_EXCEPTION, 'errorMessage':"", 'errorTrace':strout.get()}) # Reset the timeout s.save() if archiveFile.filename == None: return json.dumps({'errorType':ERR_OTHER, 'errorMessage':"File not uploaded.", 'errorTrace':""}) # Save file in a temp (fd, tmpname) = tempfile.mkstemp('.zip') f = open(tmpname, 'wb', 10000) ## Read the file in chunks for chunk in websutil.fbuffer(archiveFile.file): f.write(chunk) f.close() os.close(fd) # Call submit.py ## Redirect stdout to catch logging messages from submit strout = websutil.OutputString() sys.stdout = strout try: submit.submit(tmpname, assignmentId, username, courseId) update_db.update_grades(courseId, user=username, assignment=assignmentId) except submit.SubmittedTooSoonError: traceback.print_exc(file = strout) return json.dumps({'errorType':ERR_EXCEPTION, 'errorMessage':"Tema trimisa prea curand", 'errorTrace':strout.get()}) except: traceback.print_exc(file = strout) return json.dumps({'errorType':ERR_EXCEPTION, 'errorMessage':"", 'errorTrace':strout.get()}) return json.dumps({'status':True, 'dumpLog':strout.get(), 'file': tmpname})