Esempio n. 1
0
    def upload_output(self, input, file):
        """
        POST /upload_output
        """
        output_id = Database.gen_id()
        try:
            path = StorageManager.new_output_file(output_id, file["name"])
        except ValueError:
            BaseHandler.raise_exc(BadRequest, "INVALID_FILENAME",
                                  "The provided file has an invalid name")
        StorageManager.save_file(path, file["content"])
        file_size = StorageManager.get_file_size(path)

        try:
            result = ContestManager.evaluate_output(input["task"],
                                                    input["path"], path)
        except:
            BaseHandler.raise_exc(InternalServerError, "INTERNAL_ERROR",
                                  "Failed to evaluate the output")

        Database.add_output(output_id, input["id"], path, file_size, result)
        Logger.info(
            "UPLOAD",
            "User %s has uploaded the output %s" % (input["token"], output_id))
        return InfoHandler.patch_output(Database.get_output(output_id))
Esempio n. 2
0
 def _guess_token(**kwargs):
     if "token" in kwargs:
         return kwargs["token"]
     elif "input_id" in kwargs:
         input = Database.get_input(kwargs["input_id"])
         if input: return input["token"]
     elif "output_id" in kwargs:
         output = Database.get_output(kwargs["output_id"])
         if output:
             input = Database.get_input(output["input"])
             if input: return input["token"]
     elif "source_id" in kwargs:
         source = Database.get_source(kwargs["source_id"])
         if source:
             input = Database.get_input(source["input"])
             if input: return input["token"]
     elif "submission_id" in kwargs:
         submission = Database.get_submission(kwargs["submission_id"])
         if submission: return submission["token"]
     return None