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)