def puzzle_list(group): if request.method == 'POST': return redirect(url_for('puzzle_editor', group=group, id=request.form['name'])) else: puzzles = PuzzleSolution.query(PuzzleSolution.group==group) return render_template('puzzle/list.html', puzzles=puzzles)
def puzzle_data(group, id): puzzle = PuzzleSolution.query().filter(PuzzleSolution.name==id, PuzzleSolution.group==group).get() if request.method == 'POST': #_id = request.form.get('_id') #if _id is not None: # puzzle = PuzzleSolution.get_by_id(_id) # print _id, puzzle form = request.form width = height = int(form['size']) hint = form['hint'] colors = {} for color_code in form.getlist('color'): colors[color_code] = form['color-' + color_code] pixels = [] for y in range(height): row = '' for x in range(width): row += form['%d,%d' % (x, y)] pixels.append(row) if puzzle is None: puzzle = PuzzleSolution(group=group, name=id) else: puzzle.name = form['title'] puzzle.width = int(form['size']) puzzle.hint = db.Text(hint) puzzle.author = users.get_current_user() puzzle.data = json.dumps( { 'colors': colors, 'pixels': pixels, }) puzzle.put() return redirect(request.referrer) else: if puzzle is None: if group == 'TEST': puzzle = TEST_PUZZLES.get(id) if group == 'AUTO': puzzle = PuzzleSolution.generate(id) if puzzle is None: if id == 'RANDOM': puzzle_ids = (PuzzleSolution .query() .filter(PuzzleSolution.group==group) .fetch(keys_only=True)) pick = int(random.random() * len(puzzle_ids)) puzzle = puzzle_ids[pick].get() if puzzle is None: template = request.args.get('template') if template is not None: puzzle = TEMPLATES.get(template) puzzle.name = id if 'application/json' in request.accept_mimetypes: return json.dumps( puzzle.to_meta(reduced=request.args.get('reduced'))) else: return render_template('puzzle/view.html', puzzle=puzzle, group=group, id=id)