Beispiel #1
0
    def executeFlow(self):

        self.db = Db()
        query_get_submission = "SELECT submission_id, file_name, question_id FROM submission WHERE status='pending' ORDER BY time_of_submission ASC LIMIT 1"
        results = self.db.executeQuery(query_get_submission)
        if results == ():
            return

        else:
            self.sub_id = str(results[0][0])
            file_name = results[0][1]
            question_id = results[0][2]

            query_update_status = "UPDATE submission SET status='processing' WHERE submission_id =" + self.sub_id
            self.db.executeQuery(query_update_status)

            submission_file = File(self.sub_id, file_name)
            submission_file.downloadFile()
            evaluate = Evaluator(submission_file, question_id)
            result = evaluate.executeSource()
            count_success = 0
            count_total = 0
            if result == [0]:
                self.final_result = "compilation error"
            if result == [1]:
                self.final_result = "runtime error"
            else:
                for success in result:
                    count_total = count_total + 1
                    if success == 2:
                        count_success = count_success + 1
                self.final_result = str(count_success) + " out of " + str(
                    count_total) + " are correct "

        self.updateDatabase()