def start_game(offer): error = False try: if 'userId' in session: player_id = session['userId'] else: player = Player() Player.insert(player) player_id = player.id session['userId'] = player.id offer = Offer.query.filter_by(id=offer).first() new_game = Game(player_one=offer.player_one, player_two = player_id) Game.insert(new_game) game = new_game.id offer.delete() current_state = State(game_id=new_game.id, move_number=1,move='white',position=start_position) State.insert(current_state) data = current_state.position except: error = True db.session.rollback() print(sys.exc_info()) finally: db.session.close() if error: return 'error' else: return redirect(url_for('black', game = game))
def move(): error = False if request.method == 'POST': content = json.loads(request.data) figure = content.get('figure', None) promote = content.get('promote', None) move_number = content.get('moveNumber', None) gameId = content.get('gameId', None) app.logger.info('gameId: %s' % gameId) if figure: if session['userId']: state = State.query.filter_by(game_id=gameId).order_by( State.move_number.desc()).first() app.logger.info('state: %s' % state) check = legal(state, figure, content['move']) if check == 1: try: legal_move = reffery(state, figure, content['move'], promote) next_state = State( game_id=state.game_id, move_number=state.move_number + 1, move=legal_move['next_move'], position=legal_move['new_position'], white_timer=legal_move['time']['white'], black_timer=legal_move['time']['black']) State.insert(next_state) data = next_state.format() cash_put(state.game_id, state.move_number + 1) except: error = True db.session.rollback() app.logger.info(sys.exc_info()) app.logger.info(sys.argv[1]) finally: db.session.close() if error: return json.dumps({'error': True}) return json.dumps(data) #return json.dumps({'promotion': data}) else: return json.dumps({'error': check}) if move_number: if session['userId']: cashed = cash_get(gameId, move_number) if cashed: return json.dumps(None) state = State.query.join(Game).filter( or_(Game.player_one == session['userId'], Game.player_two == session['userId'])).order_by( State.move_number.desc()).first() new_state = state.format() db.session.close() if move_number < new_state['move_number']: return json.dumps(new_state) else: return json.dumps(None) else: return json.dumps({'kas': 'per huiniene'})