Exemplo n.º 1
0
def compensate_send():
    data = json.loads(request.data)
    Player.player_compensate(data)
    compensate = Compensate(comment=data["comment"], content=request.data, author_id=current_user.id)
    login_db.session.add(compensate)
    login_db.session.commit()

    return ""
Exemplo n.º 2
0
	def save_player(self, player_data):
		player_name = player_data['name']
		player_school = player_data['school']
		player_town = player_data['town']
		player_team = player_data['team']

		try:
			player = Player.objects.get(name=player_name, school=player_school, town=player_town, team = player_team)
			print 'EXISTING PLAYER FOUND!!!'
		except Player.DoesNotExist:
			player = Player(**player_data)
			player.save()
    def save_player(self, player_data):
        player_name = player_data["name"]
        player_school = player_data["school"]
        player_town = player_data["town"]
        player_team = player_data["team"]

        try:
            player = Player.objects.get(name=player_name, school=player_school, town=player_town, team=player_team)
            print "EXISTING PLAYER FOUND!!!"
        except Player.DoesNotExist:
            player = Player(**player_data)
            player.save()
Exemplo n.º 4
0
def player_search_name():
    if request.method == "GET":
        player_name = request.args.get('name')
        # player = Player.player_test()
        player = Player.player_find_by_name(player_name)
        if not player:
            return ""
        return JSONEncoder().encode(player)
    else:
        player_data = json.loads(request.data)
        # 预处理player变量 纠正变量类型
        adjust_player_data(player_data)
        Player.player_find_and_replace_by_id(player_data["_id"], player_data)
        return ""
Exemplo n.º 5
0
def player_building_save():
    data = json.loads(request.data)
    data["_id"] = ObjectId(data["_id"])
    data["building_lv"] = int(data["building_lv"])
    Player.collection.update_one({"_id": data["_id"]}, {"$set": {"buildings.%s.level" % data["building_pos"]: data["building_lv"]}})
    player = Player.player_find_by_id(data["_id"])
    return JSONEncoder().encode(player)
Exemplo n.º 6
0
def populate_player_hero_scores_from_json(hero_ranking_json, hero_match_json,
                                          heroes_json, player_json, player_id):
    hs_dict = {}
    for h in json.loads(heroes_json):
        hs_dict[h['id']] = h
    app.logger.info("heroes dict: {}".format(hs_dict))
    hm_dict = {}
    max_win = -1
    max_last_played = -1
    for hm in json.loads(hero_match_json):
        # NOTE: in player hero API, hero_id is string type, wired! :(
        hm_dict[int(hm['hero_id'])] = hm
        if max_win < hm['win']:
            max_win = hm['win']
        if max_last_played < hm['last_played']:
            max_last_played = hm['last_played']
    app.logger.info("hero match dict: {}".format(hm_dict))
    hr_dict = {}
    for hr in json.loads(hero_ranking_json):
        hr_dict[hr['hero_id']] = hr
    app.logger.info("hero rank dict: {}".format(hm_dict))
    # TODO: player might not present when another client is accessing, need a lock here
    player = Player.query.filter(Player.account_id == player_id).first()
    if player is None:
        p_dict = json.loads(player_json)
        player = Player(account_id=p_dict['profile']['account_id'],
                        steam_id=p_dict['profile']['steamid'],
                        personaname=p_dict['profile']['personaname'],
                        name=p_dict['profile']['name'],
                        avatar=p_dict['profile']['avatar'])
        db.session.add(player)
        db.session.commit()
    for hero_id in hs_dict.keys():
        hero = Hero.query.filter(Hero.hero_id == hero_id).first()
        if hero is None:
            hero = Hero(hero_id=hero_id,
                        name=hs_dict[hero_id]['name'],
                        localized_name=hs_dict[hero_id]['localized_name'],
                        primary_attr=hs_dict[hero_id]['primary_attr'],
                        attack_type=hs_dict[hero_id]['attack_type'],
                        roles=",".join(hs_dict[hero_id]['roles']),
                        legs=hs_dict[hero_id]['legs'])
            db.session.add(hero)
            db.session.commit()
        hero_score = HeroScore(player=player, hero=hero)
        if hero_id not in hm_dict:
            hero_score.last_played_score = 0.0
            hero_score.win_score = 0.0
        else:
            last_played = hm_dict[hero_id]['last_played']
            hero_score.last_played_score = float(last_played) / max_last_played
            win = hm_dict[hero_id]['win']
            hero_score.win_score = float(win) / max_win
        if hero_id not in hr_dict:
            hero_score.rank_score = 0.0
        else:
            hero_score.rank_score = hr_dict[hero_id]['percent_rank']
        hero_score.overall_score = hero_score.get_overall_score()
        db.session.add(hero_score)
        db.session.commit()
Exemplo n.º 7
0
class AddPlayerCommand(Command):
    """Handle the book deletion."""

    key = "add"
    readable_key = key
    description = "Add a player to the db."

    def __init__(self, player_info):
        """Init the command and the player to add to the db."""
        self.player = Player(
            **player_info) if player_info else Player.auto_init()

    def execute(self, context):
        """Add the player and go to the main page."""
        self.player.save()
        context.change_page("mainpage")
Exemplo n.º 8
0
def addPlayer(data):

    message = 'Прости, но ты уже есть в списке игроков.\n\n'

    user_id = data['from_id']

    player = Player.query.filter_by(user_id=user_id).first()

    if not player:

        # получаем имя, так как оно последнее и без пробелов
        name = data['text'].split()[-1]

        if check_name(name):
            message = 'Такое имя уже есть в списке.\n\n'
            return message, ''

        date = datetime.datetime.today() + datetime.timedelta(hours=3)

        player = Player(user_id=user_id, name=name, date=date)
        db.session.add(player)
        db.session.commit()

        message = 'Я добавил тебя в таблицу.\n\n'

    players = Player.query.all()

    for player in players:
        message += player.name + " - " + player.date.strftime(
            "%d/%m/%Y") + "\n"

    return message, ''
Exemplo n.º 9
0
def index():

    if request.method == 'POST':

        nickname = request.form.get('nickname')
        password = request.form.get('password')

        if password == '':
            password = None

        if nickname == '':

            background = random.choice(['1', '2', '3'])

            return render_template('index.html', background=url_for('static', filename='backgrounds/{}.jpg'.format(background)), errors=True)

        g = Game(password=password, card=BlackCards.query.order_by(func.random()).first())

        db.session.add(g)
        db.session.commit()

        p = Player(nickname=nickname, game=g, uuid=uuid.uuid4().hex)

        db.session.add(p)
        db.session.commit()

        session['player'] = p.id

        return redirect( url_for('game', id=g.id) )

    elif request.method == 'GET':

        background = random.choice(['1', '2', '3'])

        return render_template('index.html', background=url_for('static', filename='backgrounds/{}.jpg'.format(background)))
Exemplo n.º 10
0
def get_player_list_letter(startswith):
    page = request.args.get('page', 1, type=int)
    per_page = min(request.args.get('per_page', 10, type=int), 50)
    data = Player.to_collection_dict(
                    Player.query.filter(Player.player_name.startswith(startswith)),
                    page, per_page, 'api.get_player_list_letter', startswith=startswith)
    return jsonify(data)
Exemplo n.º 11
0
def purchased_players_view(username):
    data = dict()
    data['players'] = Player.order_by(('score', User.ORDER_DESCENDING),
                                      ('price', User.ORDER_DESCENDING),
                                      query={'owner_username': username})
    data['summary'] = player_summary(data['players'])
    return data
Exemplo n.º 12
0
 def __call__(self):
     data = dict()
     # Game
     data['game'] = list()
     game = Game.read()
     if game:
         data['game'].append(game.to_dict())
     # User
     data['user'] = list()
     users = User.get_all()
     for user in users:
         user_dict = user.to_dict()
         data['user'].append(user_dict)
     # Player
     data['player'] = list()
     players = Player.get_all()
     for player in players:
         data['player'].append(player.to_dict())
     # Bid
     data['bid'] = list()
     bids = Bid.get_all()
     for bid in bids:
         data['bid'].append(bid.to_dict())
     # Write to the file
     with open(self.file_name, 'w') as json_file:
         json.dump(data,
                   json_file,
                   ensure_ascii=False,
                   sort_keys=True,
                   indent=4)
Exemplo n.º 13
0
def bootstrap():
    with open('bootstrap.csv') as csvfile:
        players = csv.reader(csvfile)
        for p in players:
            np = Player(name=p[0], wins=p[1], kills=p[2], deaths=p[3])
            db.session.add(np)
            db.session.commit()
Exemplo n.º 14
0
def accept_bid(bid, user, amount=Bid.PASS):
    transaction = Bid.get_transaction()
    bid_result = accept_bid_transaction(transaction, bid, user, amount)
    if bid_result <= 0:
        return bid_result
    bid.refresh()
    game = Game.read()
    if not bid.is_bid_complete(game.user_count):
        return Bid.SUCCESS
    # Determine Winner
    player = Player.query_first(name=bid.player_name)
    winning_bid = max(bid.bid_map, key=lambda bid_dict: bid_dict['amount'])
    if winning_bid['amount'] < 1:
        purchase_player_transaction(transaction, player)
    else:
        winning_bids = [
            bid_dict for bid_dict in bid.bid_map
            if bid_dict['amount'] == winning_bid['amount']
        ]
        if len(winning_bids) > 1:
            winning_index = random.randrange(0, len(winning_bids))
            winning_bid = winning_bids[winning_index]
        winner = User.query_first(username=winning_bid['username'])
        purchase_player_transaction(transaction, player, winner,
                                    winning_bid['amount'])
        bid.winner = winning_bid['username']
        bid.winning_price = winning_bid['amount']
        bid.update()
    # Invite another bid
    return invite_bid()
Exemplo n.º 15
0
def register_view():
    # TODO: add the registration date
    form = RegistrationForm()
    if form.validate_on_submit():
        player = Player()

        role = Role.query.filter_by(role='player').first()
        player.role_id = role.id

        form.populate_obj(player)
        db.session.add(player)
        db.session.commit()

        login_user(player)
        return redirect(url_for('player_home_view'))

    return render_template('registration_form.html', form=form)
Exemplo n.º 16
0
def get_players():
    """Return all existing players in database."""
    page = request.args.get('page', 1, type=int)
    order_by = request.args.get('order_by')
    players = Player.get_all(order_by=order_by)

    response = paginate_response(players, page=page)
    return jsonify(response), 200
Exemplo n.º 17
0
 def put(self, _id):
     try:
         data = PlayerById.parser.parse_args()
         if Player.find_by_name(*data):
             return msg(
                 'Player {} already exists. Please choose a different name'
             ), 400
         player = Player.find_by_id(_id)
         if player:
             player.name = data['name']
             player.save_to_db()
             return player.json(), 201
         else:
             return msg('Player {} does not exist'.format(_id)), 400
     except:
         return msg(
             'An error occured while updating player {}'.format(_id)), 500
Exemplo n.º 18
0
def get_player(nickname):
    """Retrieve single player instance from database."""
    player = Player.get_player_stats(nickname)
    if player is None:
        return jsonify({'message': 'Player instance could not be found.'}), 404

    response = player.to_dict()
    return jsonify(response), 200
Exemplo n.º 19
0
def get_server_players(endpoint):
    """Return list of players on server."""
    page = request.args.get('page', 1, type=int)
    order_by = request.args.get('order_by')
    players = Player.get_all(order_by=order_by, endpoint=endpoint)

    response = paginate_response(players, page=page)
    return jsonify(response), 200
Exemplo n.º 20
0
def score(data=None, decrypt=True):
    data = data or request.data
    if not data:
        logging.warning('Empty request')
        return 'No data', 400
    print('got a score!!')
    print(data)
    data = dumb_decryption(data) if decrypt else data
    try:
        player = Player.query.get(data['player']['id'])
        if not player:
            player = Player(data['player'])
        else:
            player.update_fields(data['player'])
        chart = Chart.query.get(data['chart']['chart_id'])
        if not chart:
            chart = Chart(data['chart'])
        else:
            chart.update_fields(data['chart'])
        data['score']['hash'] = data['chart'].get('hash')
        score = Score(data['score'], chart)
        score.achieved_at = datetime.utcnow()
        score.player = player
        score.version = 6
        if not score.is_supported():
            db.session.rollback()
            print('score ignored because not supported')
            return 'Not OK'
        db.session.add_all([player, chart, score])
        db.session.commit()
        print('pushed to db! ({} played by {})'.format(chart.name,
                                                       player.username))
        score.set_osmos()
        print('osmos set')
        print('updating pb if needed')
        if update_pb_for_score(player, score):
            print('updated pb returned true')
            update_player_osmos(player)
        player.playcount += 1
        db.session.commit()
    except Exception as e:
        db.session.rollback()
        logging.warning(f'Malformed score payload: \n{data}')
        raise logging.warning(e, exc_info=True)
    return 'OK'
Exemplo n.º 21
0
def purchase_player_transaction(transaction, player, user=None, amount=0):
    player_ref, player_snapshot = player.get_doc(transaction)
    user_ref = None
    user_snapshot = None
    user_updates = None
    if user:
        user_ref, user_snapshot = user.get_doc(transaction)
        if not user_snapshot:
            return False
    game = Game.read()
    if not game:
        game = Game.init_game()
    game_ref, game_snapshot = game.get_doc(transaction)
    if not player_snapshot or not game_snapshot:
        return False
    if user_snapshot:
        player_updates = {
            'status': player.PURCHASED,
            'owner_username': user_snapshot.get('username'),
            'owner': {
                'name':
                user_snapshot.get('name'),
                'points':
                user_snapshot.get('points') + player_snapshot.get('score'),
                'color':
                user_snapshot.get('color'),
                'bg_color':
                user_snapshot.get('bg_color'),
            },
            'price': amount,
        }
        user_updates = {
            'balance': user_snapshot.get('balance') - amount,
            'player_count': user_snapshot.get('player_count') + 1,
        }
        last_winner = user_snapshot.get('username').upper()
    else:
        player_updates = {'status': player.UNSOLD}
        last_winner = 'Unsold'
        amount = 0
    player_value = Player.query_first(name=player_snapshot.get('name')).value
    game_updates = {
        'total_balance': game_snapshot.get('total_balance') - amount,
        'player_in_bidding': None,
        'player_to_bid': game_snapshot.get('player_to_bid') - 1,
        'remaining_value': game_snapshot.get('remaining_value') - player_value,
        'user_to_bid': 0,
        'last_player': player_snapshot.get('name'),
        'last_winner': last_winner,
        'last_price': amount,
        'bid_in_progress': False,
    }
    if user_updates:
        transaction.update(user_ref, user_updates)
    transaction.update(player_ref, player_updates)
    transaction.update(game_ref, game_updates)
    return True
Exemplo n.º 22
0
def new_player():
    form = NewPlayerForm()
    if form.validate_on_submit():
        player = Player(name=form.name.data)
        db.session.add(player)
        db.session.commit()
        flash('Player {} successfully created'.format(player.name),
              'form-success')
    return render_template('admin/new_player.html', form=form)
Exemplo n.º 23
0
    def test_game_setup(self):
        # Setup user, player, game
        sneha = User(name='Sneha Yadgire', username='******')
        manisha = User(name='Manisha Auti', username='******')

        rohit = Player('Rohit Sharma')

        # Add them in db & refresh game status
        sneha.create()
        manisha.create()
        rohit.create()
        game = Game.init_game()

        # Read game and test
        self.assertEqual(game.player_count, 1)
        self.assertEqual(game.user_count, 2)
        self.assertEqual(game.avg_player_bid, User.INITIAL_BUDGET)
        self.assertEqual(rohit.status, Player.AVAILABLE)
Exemplo n.º 24
0
def test_player_db_create(app):
    """Test Player table creation."""
    app = app(TestingConfig)

    test_model_to_insert = Player(player_name='Test Name')
    db.session.add(test_model_to_insert)
    db.session.commit()

    assert db.session.query(Player).one()
Exemplo n.º 25
0
def create_player():
    data = request.get_json()
    add_user = Player(nama=data['nama'],
                      jk=data['jk'],
                      tgllahir=data['tgllahir'],
                      email=data['email'],
                      latitude=data['latitude'],
                      longitude=data['longitude'],
                      username=data['username'])
    add_user.hash_password(data['password'])

    db.session.add(add_user)
    db.session.commit()

    return jsonify({
        'message':
        'Congratulation You Has Been Registered, Check Your Email'
    })
Exemplo n.º 26
0
def test_DB():

    player = Player()
    player.login = '******'
    scenario = Scenario()
    scenario.name = 'scenario 1'
    scenario.leadtime = 10
    scenario.duration = 20
    gameboard = GameBoard()
    gameboard.period = 1
#    T = TableDict(10)
#    T.set_cell('order', 5, 1000)
#    T.set_cell('forecast', 8, 10)

    gameboard.data = TableDict(10)
    gameboard.data.set_cell('order', 5, 1000)
    gameboard.data.set_cell('forecast', 8, 10)

    scenario_counter = ScenarioCounter()

    player.gameboards.append(gameboard)
    player.played_scenario.append(scenario)
    player.scenario_counters.append(scenario_counter)
    scenario.gameboards.append(gameboard)
    scenario.counters.append(scenario_counter)

    db.session.add(player)
    db.session.add(scenario)
    db.session.add(gameboard)
    db.session.add(scenario_counter)

    db.session.commit()

    pl = db.session.query(Player).first()
    assert_equal('Pippo', pl.login)
    assert_equal('scenario 1', pl.played_scenario[0].name)
    d = pl.gameboards.filter(GameBoard.scenario_id==scenario.id).first()

    assert_in('<table', d.data.get_HTML())
    assert_equal(d.data.get_cell('order', 5), 1000)
    assert_equal(d.data.get_cell('order', 8), 0)
    assert_equal(d.data.get_cell('forecast', 8), 10)
    assert_equal(d.data.get_cell('forecast', 1), 0)
    assert_equal(d.data.get_cell('forecast', 15), None)
Exemplo n.º 27
0
def sign_up():
    """
    Creates a new user and logs them in
    """
    form = SignUpForm()
    form['csrf_token'].data = request.cookies['csrf_token']

    if form.validate_on_submit():
        user = Player(username=form.data['username'],
                      ntrp=form.data['ntrp'],
                      password=form.data['password'])

        db.session.add(user)
        db.session.commit()
        login_user(user)

        return user.to_dict()

    return {'errors': validation_errors_to_error_messages(form.errors)}, 401
Exemplo n.º 28
0
def playercreate():
    form = PlayerEntryForm()
    if form.validate_on_submit():
        newplayer = Player(playername=form.playername.data,
                           nationality=form.country.data,
                           club=form.club.data)
        db.session.add(newplayer)
        db.session.commit()
        return redirect(url_for('playerlist'))
    return render_template('playercreate.html', form=form)
Exemplo n.º 29
0
def auth_register(username, password, password2):
    error = False
    wrong_password, something, please_enter, user_exists = None, None, None, None
    if username and password and password2:
        if password == password2:
            check_player = Player.query.filter_by(name=username).first()
            if not check_player:
                try:
                    pa = password.encode()
                    h = hashlib.sha256(pa + salt).hexdigest()
                    random = Random(10)
                    player = Player(name=username, password=h, random=random)
                    Player.insert(player)
                    user_id = player.id
                except:
                    app.logger.info(sys.exc_info())
                    error = True
                    something = 'Something went wrong. Please try again.'
                    db.session.rollback()
                finally:
                    db.session.close()
            else:
                error = True
                user_exists = 'Username unawailable. Such user allready exists'
        else:
            error = True
            wrong_password = '******'
    else:
        error = True
        please_enter = 'Please provide user name and password!'
    if error:
        return {
            'success': False,
            'passwordMsgRe': wrong_password,
            'userExists': user_exists,
            'enterMsgRe': please_enter,
            'something': something
        }
    else:
        session['user'] = username
        session['info'] = random
        session['userId'] = user_id
        return {'success': True}
Exemplo n.º 30
0
def test_player_db_repr(app):
    """Test Player object representation."""
    app = app(TestingConfig)

    test_model_to_insert = Player(player_name='Test Name')

    db.session.add(test_model_to_insert)
    db.session.commit()

    assert str(db.session.query(Player).first()) == '<Player: Test Name>'
Exemplo n.º 31
0
def get_all_players():
    """
    Queries database for the entire player table, paginates results, and
    returns JSON response.
    """
    page = request.args.get('page', 1, type=int)
    per_page = min(request.args.get('per_page', 10, type=int), 50)
    data = Player.to_collection_dict(Player.query, page, per_page,
                                     'api.get_all_players')
    return jsonify(data)
Exemplo n.º 32
0
def signup():
    form = SignUpForm();
    if form.validate_on_submit():
        player = Player(firstname=form.firstname.data, lastname=form.lastname.data, phone=form.phone.data, email=form.email.data,
                        plz=form.plz.data, city=form.city.data, jersey_size=form.jersey_size.data, jersey_print=form.jersey_print.data)
        flash("Neue Anmeldung: " + str(player))
        db.session.add(player)
        db.session.commit()
        return redirect(url_for('index'))
    return render_template('signup.html', title='Anmelden', form=form)
Exemplo n.º 33
0
def test_valid_player_field(app):
    """Verify Player fields saved properly."""
    app = app(TestingConfig)

    test_model_to_insert = Player(
        player_name='Test Name',
        player_image='testname.jpg',
        position='PG',
        first_nba_season=2019,
        field_goal_made=100.3,
        field_goal_attempted=100.3,
        field_goal_pct=33.3,
        three_pt_made=100.3,
        three_pt_attempted=100.3,
        three_pt_pct=33.3,
        free_throw_made=100.3,
        free_throw_attempted=100.3,
        free_throw_pct=33.3,
        true_stg_pct=33.3,
        points=33.3,
        off_reb=33.3,
        def_reb=33.3,
        tot_reb=33.3,
        assists=33.3,
        steals=33.3,
        blocks=33.3,
        turnovers=33.3,
    )

    db.session.add(test_model_to_insert)
    db.session.commit()

    assert db.session.query(Player).filter_by(player_name='Test Name').one()
    assert db.session.query(Player).first().player_name == 'Test Name'
    assert db.session.query(Player).first().player_image == 'testname.jpg'
    assert db.session.query(Player).first().position == 'PG'
    assert db.session.query(Player).first().first_nba_season == 2019
    assert db.session.query(Player).first().field_goal_made == 100.3
    assert db.session.query(Player).first().field_goal_attempted == 100.3
    assert db.session.query(Player).first().field_goal_pct == 33.3
    assert db.session.query(Player).first().three_pt_made == 100.3
    assert db.session.query(Player).first().three_pt_attempted == 100.3
    assert db.session.query(Player).first().three_pt_pct == 33.3
    assert db.session.query(Player).first().free_throw_made == 100.3
    assert db.session.query(Player).first().free_throw_attempted == 100.3
    assert db.session.query(Player).first().free_throw_pct == 33.3
    assert db.session.query(Player).first().true_stg_pct == 33.3
    assert db.session.query(Player).first().points == 33.3
    assert db.session.query(Player).first().off_reb == 33.3
    assert db.session.query(Player).first().def_reb == 33.3
    assert db.session.query(Player).first().tot_reb == 33.3
    assert db.session.query(Player).first().assists == 33.3
    assert db.session.query(Player).first().steals == 33.3
    assert db.session.query(Player).first().blocks == 33.3
    assert db.session.query(Player).first().turnovers == 33.3
Exemplo n.º 34
0
def create_player():
    """Create new player instance."""
    json_data = request.get_json()
    if not json_data:
        return jsonify({'error': 'No required input data provided.'}), 400

    data, errors = Player.from_dict(json_data)
    if errors:
        return jsonify(errors), 400

    player = Player.get(data.get('nickname'))
    if player:
        return jsonify({'error':
                        'Player with this nickname already exists.'}), 409

    # Create a new player instance
    player = Player(data)

    response = player.to_dict()
    return jsonify(response), 201
Exemplo n.º 35
0
def player_building_save():
    data = json.loads(request.data)
    data["_id"] = ObjectId(data["_id"])
    data["building_lv"] = int(data["building_lv"])
    Player.collection.update_one({"_id": data["_id"]}, {
        "$set": {
            "buildings.%s.level" % data["building_pos"]: data["building_lv"]
        }
    })
    player = Player.player_find_by_id(data["_id"])
    return JSONEncoder().encode(player)
Exemplo n.º 36
0
def players(request):
    """
    Returns the results in the current match. Will check for cached result before calculation. The cache is invalidated
     on recorded action.
    """
    cache = get_cache('default')
    players = cache.get("players")
    if not players:
        players = Player.get_results()
        cache.set('players', players)
    return Response(players)
Exemplo n.º 37
0
 def add_player(self, player_name, player_sid):
     """Add player into game in DB"""
     player_in_db = Player.query.filter_by(name=player_name).first()
     player = Player(name=player_name,
                     sid=player_sid) if not player_in_db else player_in_db
     print self.game_id
     game = Game.query.get(self.game_id)
     game.players.append(player)
     db.session.add(player)
     db.session.commit()
     db.session.close()
Exemplo n.º 38
0
def players(request):
    """
    Returns the results in the current match. Will check for cached result before calculation. The cache is invalidated
     on recorded action.
    """
    cache = get_cache('default')
    players = cache.get("players")
    if not players:
        players = Player.get_results()
        cache.set('players', players)
    return Response(players)
Exemplo n.º 39
0
Arquivo: manage.py Projeto: jxster/cbl
def populate():
    Position.insert_positions()

    with app.open_resource('./testing/data/teams.json') as teamdata:
        team_dict = json.load(teamdata)['teams']
        team_models = []
        for t in team_dict:
            Team.add_team(name=t['name'],
                          conference=t['conference'],
                          gm=t['gm'],
                          season=2014)

    with app.open_resource('./testing/data/players.json') as playerdata:
        player_dict = json.load(playerdata)['players']
        for p in player_dict:
            Player.add_player(name=p['name'],
                              positions=p['positions'],
                              team=p['team'])
            Player_Season
    populate_games()
    populate_stats()
Exemplo n.º 40
0
def record_action(request):
    """
    Records a match event. After recording, reset the cache.
    The post arguments are team, name, action, seconds_in_game
    """
    #todo defensive for wrong post data
    name = request.POST.get("name")
    team = request.POST.get("team")
    action = request.POST.get("action")
    seconds_in_game = request.POST.get("seconds_in_game")

    #get or create the player
    player, created = Player.objects.get_or_create(
        name=name,
        team=team
    )

    #create the action
    action = PlayerAction.objects.create(
        player=player,
        type=action,
        seconds_in_game=seconds_in_game
    )

    #create the scoring for users
    affected_users = [up['user'] for up in UserPlayer.objects.filter(player=player).values('user')]
    userscores= []
    for user_id in affected_users:
        userscore = UserScore(
            playeraction=action,
            user_id=user_id
        )
        userscores.append(userscore)
    UserScore.objects.bulk_create(userscores)

    #reset the cache
    cache= get_cache('default')
    players = Player.get_results()
    cache.set('players', players)

    users = User.get_results()
    cache.set("users", users)
    return Response({'success':True})
Exemplo n.º 41
0
def adjust_player_data(player_data):
    player_data["_id"] = ObjectId(player_data["_id"])
    new_player = Player.player_find_by_id(player_data["_id"])
    # buildings
    player_data["buildings"] = new_player["buildings"]
    # for pos in player_data["buildings"]:
    #     player_data["buildings"][pos]["construct_id"] = int(player_data["buildings"][pos]["construct_id"])
    #     player_data["buildings"][pos]["level"] = int(player_data["buildings"][pos]["level"])

    # resource
    for resource_type in player_data["resource"]:
        if resource_type in ["updated", "diamond"]:
            player_data["resource"][resource_type] = int(player_data["resource"][resource_type])
        else:
            player_data["resource"][resource_type] = float(player_data["resource"][resource_type])

    # resource_delta
    for resource_type in player_data["resource_delta"]:
        player_data["resource_delta"][resource_type] = float(player_data["resource_delta"][resource_type])
Exemplo n.º 42
0
def player_single_save():
    data = json.loads(request.data)
    adjust_single_data(data)
    Player.player_update_single_field(data)
    player = Player.player_find_by_id(data["_id"])
    return JSONEncoder().encode(player)
Exemplo n.º 43
0
import csv
from app.models import Player
import os
import django
django.setup()

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'freepl_main.settings')
# to run this file, do python3 manage.py runshell and then do exec(open("load.py").read())

for i in Player.objects.all():
    i.delete()

with open('indiaaus.csv') as f:
    reader=csv.DictReader(f)
    for row in reader:
        p=(row['Player Name'].strip())
        c="".join(row['Cost'].split())

        r="".join(row['Role'].split())
        n="".join(row['Country'].split())
        c=int(c)
        z=Player(name=p,cost=c,role=r,country=n)
        z.save()
        

Exemplo n.º 44
0
	def handle_noargs(self, **options):
		cursor = connections['import'].cursor()
		
		# Import players
		
		cursor.execute('SELECT ID, Name FROM Player')
		row = cursor.fetchone()
		players = {}
		while row:
			try:
				player = Player.objects.get(name=row[1])
			except Player.DoesNotExist:
				player = Player(name=row[1])
				player.save()
			
			players[row[0]] = player
			
			row = cursor.fetchone()
		
		cursor.execute('''
			SELECT	EventID, Event.Date, PlayerID, [1st], [2nd], [3rd], [4th]
			FROM	Result INNER JOIN Event on Event.ID = Result.EventID
			WHERE	EventID > 3
			ORDER BY Event.Date ASC
		''')
		
		# Import events
		
		event_id = 0
		event = None
		row = cursor.fetchone()
		
		transaction.commit_unless_managed()
		transaction.enter_transaction_management()
		transaction.managed(True)
		
		try:
			while row:
				if event_id != row[0]:
					event = Event(event_date=row[1])
					try:
						event.save()
						event_id = row[0]
						event_points = 0
						self.stdout.write("Importing event %s\n" % event)
					except IntegrityError:
						# Event already exists, skip it
						self.stdout.write("Skipping event %s (already imported)\n" % row[0])
				
				# Only process result if a saved event exists
				if event.pk is not None:
					result = EventResult(event=event, player=players[row[2]], firsts=row[3], seconds=row[4], thirds=row[5], fourths=row[6])
					result.save()
					event_points += result.points
					
					if event.results.count() == 4:
						if event_points != MAX_EVENT_POINTS:
							# Discard invalid events
							event.delete()
							self.stdout.write("Discarding event %s[%s] (invalid number of points: %s)\n" % (event, event_id, event_points))
						else:
							# Complete event
							event.completed = True
							event.save()
				
				row = cursor.fetchone()
			
		except:
			transaction.rollback()
			transaction.leave_transaction_management()
			self.stdout.write("Unexpected error importing events")
			raise
			return
		
		transaction.commit()
		transaction.leave_transaction_management()