def solutionPage(): ordering = request.get_json().get("ordering") page = int(request.get_json().get("page")) -1 problem = Problem.query.filter_by(id = request.get_json().get("problemId")).first() if ordering == "CYL": return jsonify({"results" :Solution.simpleJsonify(Solution.query.filter_by(problemId = problem.id).order_by(db.desc(Solution.cycles)).offset(page*12).limit(12))}) elif ordering == "NOD": return jsonify({"results" :Solution.simpleJsonify(Solution.query.filter_by(problemId = problem.id).order_by(db.desc(Solution.nodeCount)).offset(page*12).limit(12))}) elif ordering == "INS": return jsonify({"results" :Solution.simpleJsonify(Solution.query.filter_by(problemId = problem.id).order_by(db.desc(Solution.instructionCount)).offset(page*12).limit(12))})
def save(): userId = None nodes = request.get_json().get("nodes") input = request.get_json().get("input") output = request.get_json().get("out") problemId = request.get_json().get("problemId") solutionId = request.get_json().get("solutionId") if session.has_key("account.id"): userId = session["account.id"] solution = None problem = None if request.get_json().has_key("problemId"): problem = Problem.query.filter_by(id = problemId).first() else: for value in input: if not (value["active"] == 0 or value["active"] == 1): return jsonify(err = [{'type':'danger', 'out' : "illegal data"}]) problem = Problem( nodes[0][0].get("state"),nodes[0][1].get("state"),nodes[0][2].get("state"),nodes[0][3].get("state"), nodes[1][0].get("state"),nodes[1][1].get("state"),nodes[1][2].get("state"),nodes[1][3].get("state"), nodes[2][0].get("state"),nodes[2][1].get("state"),nodes[2][2].get("state"),nodes[2][3].get("state"), int(input[0]["active"]),int(input[1]["active"]),int(input[2]["active"]),int(input[3]["active"]), int(output[0]["active"]),int(output[1]["active"]),int(output[2]["active"]),int(output[3]["active"]),userId) if not problem.isValid(): return jsonify(err = [{'type':'danger', 'out' : "illegal data"}]) db.session.add(problem) db.session.flush() s = Solution.query.filter(Solution.userId == userId, Solution.id == solutionId ).first() if(s == None or userId == None): solution = Solution( nodes[0][0].get("text"),nodes[0][1].get("text"),nodes[0][2].get("text"),nodes[0][3].get("text"), nodes[1][0].get("text"),nodes[1][1].get("text"),nodes[1][2].get("text"),nodes[1][3].get("text"), nodes[2][0].get("text"),nodes[2][1].get("text"),nodes[2][2].get("text"),nodes[2][3].get("text"),problem.id,userId) db.session.add(solution) else: solution = s solution.__init__( nodes[0][0].get("text"),nodes[0][1].get("text"),nodes[0][2].get("text"),nodes[0][3].get("text"), nodes[1][0].get("text"),nodes[1][1].get("text"),nodes[1][2].get("text"),nodes[1][3].get("text"), nodes[2][0].get("text"),nodes[2][1].get("text"),nodes[2][2].get("text"),nodes[2][3].get("text"),problem.id,userId) if solution.isEmpty(): return jsonify(err = [{'type':'danger', 'out' : "no solution submitted"}]) db.session.commit() return jsonify(solutionId = solution.id)
def solution_list(): user = Account.query.filter_by(name = request.get_json().get("user")).first() problem_id = request.get_json().get("problem_id") ordering = request.get_json().get("ordering") solution_query = None if(problem_id == -1): if ordering == "CYL": solution_query = Solution.query.filter(Solution.userId == user.id, Problem.identifier == None).join(Problem, Problem.id == Solution.problemId).order_by(db.desc(Solution.cycles)) elif ordering == "NOD": solution_query = Solution.query.filter(Solution.userId == user.id, Problem.identifier == None).join(Problem, Problem.id == Solution.problemId).order_by(db.desc(Solution.nodeCount)) elif ordering == "INS": solution_query = Solution.query.filter(Solution.userId == user.id, Problem.identifier == None).join(Problem, Problem.id == Solution.problemId).order_by(db.desc(Solution.instructionCount)) else: if ordering == "CYL": solution_query = Solution.query.filter(Solution.userId == user.id , Solution.problemId == problem_id).order_by(db.desc(Solution.cycles)) elif ordering == "NOD": solution_query = Solution.query.filter(Solution.userId == user.id , Solution.problemId == problem_id).order_by(db.desc(Solution.nodeCount)) elif ordering == "INS": solution_query = Solution.query.filter(Solution.userId == user.id , Solution.problemId == problem_id).order_by(db.desc(Solution.instructionCount)) return jsonify({"results" : Solution.simpleJsonify(solution_query)})