def run(self): primary = BASE_DIR + "sub/" self.randomness = randomString(15) path = primary + self.randomness + ".cpp" while(os.path.exists(path)): self.randomness = randomString(15) path = primary + self.randomness + ".cpp" # Grab the quiz data and set the user's status to 'Submitted' q = Quiz.objects.get(id=self.quiz) submission = Submission(student=self.student, time=datetime.now(), status="Submitted", randomness=self.randomness, file=path, quiz=q, didPass = False, didFail = False) submission.save() # Write the file to disk destination = open(path, 'wb+') for chunk in self.file.chunks(): destination.write(chunk) destination.close() if OS == "UNIX": p = Popen(["g++", "-o" + path[0:-3]+"exe", path]) else: p = Popen(["compile.bat", "C:\\Program Files (x86)\\Microsoft Visual Studio 9.0\\VC\\bin", path, path[0:-3] + "exe"]) self.watch_process(p, 1, 20) # Checks to see if it actually compiled successfully if os.path.exists(path[0:-3] + "exe"): submission.status = "Compiled" submission.save() p = Popen([path[0:-3] + "exe", q.testcases, path[0:-3]+"txt"]) submission.status = "Running" submission.save() ti = datetime.now().microsecond print datetime.now().microsecond bo = self.watch_process(p, 0.01, 2000) print datetime.now().microsecond ti = datetime.now().microsecond - ti ti = ti / 10 # Record how long it took to execute the program submission.runtime = ti if not bo: submission.status = "Hangs" submission.didPass = False submission.save() return if(os.path.exists(path[0:-3]+"txt")): submission.status = "Executed" submission.save() empty = not check_for_blank_line(path[0:-3]+"txt") if not empty: strip(path[0:-3]+"txt") print "Here's the Info" print path[0:-3]+"txt" print q.answer if filecmp.cmp(path[0:-3]+"txt", q.answer, False): submission.status = "PASS" submission.didPass = True else: submission.status = "FAIL" submission.didFail = True submission.didPass = False else: submission.status = "Empty Output File" submission.didPass = False else: submission.status = "No Output File" submission.didPass = False else: # It must not have compiled p = Popen([]) submission.status = "Failed to Compile" submission.didPass = False submission.save()
def run(self): primary = BASE_DIR + "sub/" self.randomness = randomString(15) path = primary + self.randomness + ".cpp" while os.path.exists(path): self.randomness = randomString(15) path = primary + self.randomness + ".cpp" # Grab the quiz data and set the user's status to 'Submitted' q = Quiz.objects.get(id=self.quiz) submission = Submission( student=self.student, time=datetime.now(), status="Submitted", randomness=self.randomness, file=path, quiz=q, didPass=False, didFail=False, ) submission.save() # Write the file to disk destination = open(path, "wb+") for chunk in self.file.chunks(): destination.write(chunk) destination.close() if OS == "UNIX": p = Popen(["g++", "-o" + path[0:-3] + "exe", path]) else: p = Popen( [ "compile.bat", "C:\\Program Files (x86)\\Microsoft Visual Studio 9.0\\VC\\bin", path, path[0:-3] + "exe", ] ) self.watch_process(p, 1, 20) # Checks to see if it actually compiled successfully if os.path.exists(path[0:-3] + "exe"): submission.status = "Compiled" submission.save() p = Popen([path[0:-3] + "exe", q.testcases, path[0:-3] + "txt"]) submission.status = "Running" submission.save() ti = datetime.now().microsecond print datetime.now().microsecond bo = self.watch_process(p, 0.01, 2000) print datetime.now().microsecond ti = datetime.now().microsecond - ti ti = ti / 10 # Record how long it took to execute the program submission.runtime = ti if not bo: submission.status = "Hangs" submission.didPass = False submission.save() return if os.path.exists(path[0:-3] + "txt"): submission.status = "Executed" submission.save() empty = not check_for_blank_line(path[0:-3] + "txt") if not empty: strip(path[0:-3] + "txt") print "Here's the Info" print path[0:-3] + "txt" print q.answer if filecmp.cmp(path[0:-3] + "txt", q.answer, False): submission.status = "PASS" submission.didPass = True else: submission.status = "FAIL" submission.didFail = True submission.didPass = False else: submission.status = "Empty Output File" submission.didPass = False else: submission.status = "No Output File" submission.didPass = False else: # It must not have compiled p = Popen([]) submission.status = "Failed to Compile" submission.didPass = False submission.save()