Esempio n. 1
0
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))})
Esempio n. 2
0
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)
Esempio n. 3
0
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)})