コード例 #1
0
ファイル: routes.py プロジェクト: andypymont/fantasypl
def add_player():
	add_id = request.form.get('add', 0)
	drop_id = request.form.get('drop', 0)

	if (add_id > 0 and drop_id > 0):
		add = db.get_by_id(add_id)
		drop = db.get_by_id(drop_id)

		cgw = current_gameweek()
		wgw = waiver_gameweek()

		waiver = waiver_status(add, cgw['week'], cgw['deadline'], cgw['waiver'], next_gameweek()['waiver'])

		if waiver['addable']:

			if waiver['type'] == 'free':
				add['team'] = current_user.get_name()
				drop['team'] = ''
				drop['startingxi'] = 0

				db.save_all((add, drop))
				add_waiver_claim(current_user.get_id(), current_user.get_name(), cgw['week'], add, drop, 'success')

			elif waiver['type'] == 'waiver':
				add_waiver_claim(current_user.get_id(), current_user.get_name(), wgw['week'], add, drop)

	return redirect(request.args.get('next', url_for('lineup')))
コード例 #2
0
def add_player():
    add_id = request.form.get('add', 0)
    drop_id = request.form.get('drop', 0)

    if (add_id > 0 and drop_id > 0):
        add = db.get_by_id(add_id)
        drop = db.get_by_id(drop_id)

        cgw = current_gameweek()
        wgw = waiver_gameweek()

        waiver = waiver_status(add, cgw['week'], cgw['deadline'],
                               cgw['waiver'],
                               next_gameweek()['waiver'])

        if waiver['addable']:

            if waiver['type'] == 'free':
                add['team'] = current_user.get_name()
                drop['team'] = ''
                drop['startingxi'] = 0

                db.save_all((add, drop))
                add_waiver_claim(current_user.get_id(),
                                 current_user.get_name(), cgw['week'], add,
                                 drop, 'success')

            elif waiver['type'] == 'waiver':
                add_waiver_claim(current_user.get_id(),
                                 current_user.get_name(), wgw['week'], add,
                                 drop)

    return redirect(request.args.get('next', url_for('lineup')))
コード例 #3
0
ファイル: routes.py プロジェクト: andypymont/fantasypl
def trade(team1, team2):
	team1, team2 = db.get_by_id(team1), db.get_by_id(team2)

	if (not team1) or (not team2):
		abort(404)

	if request.method == 'POST':
		cgw = current_gameweek()
		players = dict([(unicode(player['_id']), player) for player in db.get('players')])

		firstplayer = [players.get(player) for player in request.form.getlist('firstplayer')]
		secondplayer = [players.get(player) for player in request.form.getlist('secondplayer')]

		for player in firstplayer:
			player['team'] = team2['name']
		for player in secondplayer:
			player['team'] = team1['name']

		trade = dict(
			week=cgw['week'],
			firstplayer=firstplayer,
			secondplayer=secondplayer,
			first=team1,
			second=team2)

		db.save_all(firstplayer + secondplayer)
		db.save(trade, 'trades')

		return redirect(url_for('scoring'))
	else:
		return render_template('trade.html', activepage="scoring", team1=team1, team2=team2)
コード例 #4
0
ファイル: routes.py プロジェクト: andypymont/fantasypl
def json_player():
	player = db.get_by_id(request.args.get('id', 0))
	if player:
		player = dict(id=player['_id'], text='%s %s' % (player['position'], player['name']))
	else:
		player = dict(id='', text='')

	return jsonify(dict(players=[player]))
コード例 #5
0
ファイル: routes.py プロジェクト: andypymont/fantasypl
def json_club_players(clubid):
	query = request.args.get('q', '').lower()
	club = db.get_by_id(clubid)

	players = sorted(db.get('players', {'club': club['name'], 'searchname': lambda sn: (query in sn)}),
					 key=sort_player)

	return jsonify({'players': [dict(id=player['_id'], text='%s %s' % (player['position'], player['name'])) for player in players]})
コード例 #6
0
ファイル: routes.py プロジェクト: andypymont/fantasypl
def json_team_players(teamid):
	query = request.args.get('q', '')
	team = db.get_by_id(teamid)

	players = sorted(db.get('players', {'team': team['name'], 'searchname': lambda sn: (query in sn)}),
					 key=sort_player)

	return jsonify({'players': [dict(id=player['_id'], text='%s %s' % (player['position'], player['name'])) for player in players]})
コード例 #7
0
def json_player():
    player = db.get_by_id(request.args.get('id', 0))
    if player:
        player = dict(id=player['_id'],
                      text='%s %s' % (player['position'], player['name']))
    else:
        player = dict(id='', text='')

    return jsonify(dict(players=[player]))
コード例 #8
0
def trade(team1, team2):
    team1, team2 = db.get_by_id(team1), db.get_by_id(team2)

    if (not team1) or (not team2):
        abort(404)

    if request.method == 'POST':
        cgw = current_gameweek()
        players = dict([(unicode(player['_id']), player)
                        for player in db.get('players')])

        firstplayer = [
            players.get(player)
            for player in request.form.getlist('firstplayer')
        ]
        secondplayer = [
            players.get(player)
            for player in request.form.getlist('secondplayer')
        ]

        for player in firstplayer:
            player['team'] = team2['name']
        for player in secondplayer:
            player['team'] = team1['name']

        trade = dict(week=cgw['week'],
                     firstplayer=firstplayer,
                     secondplayer=secondplayer,
                     first=team1,
                     second=team2)

        db.save_all(firstplayer + secondplayer)
        db.save(trade, 'trades')

        return redirect(url_for('scoring'))
    else:
        return render_template('trade.html',
                               activepage="scoring",
                               team1=team1,
                               team2=team2)
コード例 #9
0
def json_club_players(clubid):
    query = request.args.get('q', '').lower()
    club = db.get_by_id(clubid)

    players = sorted(db.get(
        'players', {
            'club': club['name'],
            'searchname': lambda sn: (query in sn)
        }),
                     key=sort_player)

    return jsonify({
        'players': [
            dict(id=player['_id'],
                 text='%s %s' % (player['position'], player['name']))
            for player in players
        ]
    })
コード例 #10
0
def json_team_players(teamid):
    query = request.args.get('q', '')
    team = db.get_by_id(teamid)

    players = sorted(db.get(
        'players', {
            'team': team['name'],
            'searchname': lambda sn: (query in sn)
        }),
                     key=sort_player)

    return jsonify({
        'players': [
            dict(id=player['_id'],
                 text='%s %s' % (player['position'], player['name']))
            for player in players
        ]
    })
コード例 #11
0
def transfer_player():
    player_id = request.form.get('transferplayer', 0)
    new_club = request.form.get('newclub', '')

    if player_id > 0:
        player = db.get_by_id(player_id)

    if (player_id == 0) or (not player):
        flash("Player not found or not specified - please try again")
        return redirect(url_for('scoring'))
    elif new_club == '':
        flash("No club specified - please try again")
        return redirect(url_for('scoring'))
    else:
        if new_club == 'No PL Club':
            player['club'] = ''
        else:
            player['club'] = new_club
        db.save(player)
        return redirect(url_for('players', q=player.get('searchname', '')))
コード例 #12
0
ファイル: routes.py プロジェクト: andypymont/fantasypl
def transfer_player():
	player_id = request.form.get('transferplayer', 0)
	new_club = request.form.get('newclub', '')

	if player_id > 0:
		player = db.get_by_id(player_id)

	if (player_id == 0) or (not player):
		flash("Player not found or not specified - please try again")
		return redirect(url_for('scoring'))
	elif new_club == '':
		flash("No club specified - please try again")
		return redirect(url_for('scoring'))
	else:
		if new_club == 'No PL Club':
			player['club'] = ''
		else:
			player['club'] = new_club
		db.save(player)
		return redirect(url_for('players', q=player.get('searchname', '')))
コード例 #13
0
ファイル: fantasypl.py プロジェクト: andypymont/fantasypl
def process_waivers_now(cgw=None):
	if not cgw:
		cgw = current_gameweek()

	teams = get_teams(reverse=True)
	players = db.get('players')
	claims = db.get('claims', dict(week=cgw['week']))

	# mark all players currently on teams
	for player in players:
		if player['team'] != '':
			player['onteam'] = cgw['week']

	# convert player list to dictionary so we can look up by id
	players = dict([(player['_id'], player) for player in players])

	def next_claim(team):
		try:
			return sorted([claim for claim in claims if claim['user'] == team['userid'] and claim['status'] == ''],
						  key=lambda claim: claim['priority'])[0]

		except IndexError:
			return False

	# process waiver claims
	done = 0
	seq = 0
	while not done:
		done = 1 # until we find out otherwise!

		for team in teams:
			while True:
				claim = next_claim(team)
				if claim:
					done = 0

					# update status of target player from master player list:
					claim['add'] = players[claim['add']['_id']]
					claim['drop'] = players[claim['drop']['_id']]

					# update sequence of claim for correct ordering in after-event views
					claim['order'] = seq
					seq += 1

					# process claim
					if claim['add']['team'] != '':
						claim['status'] = 'failure'
						claim['whynot'] = 'player added by %s' % claim['add']['team']
					elif claim['drop']['team'] != team['name']:
						claim['status'] = 'failure'
						claim['whynot'] = 'no longer have player to drop'
					else:
						claim['status'] = 'success'
						claim['add']['team'] = team['name']
						claim['add']['onteam'] = cgw['week']
						claim['drop']['team'] = ''
						claim['drop']['startingxi'] = 0

						# success, exit loop
						break

				else:
					# no more claims for this user, exit loop
					break

	# save changes
	cgw = db.get_by_id(cgw['_id'])
	cgw['waivers_done'] = True

	db.save_all(players.values() + teams + claims + [cgw])
コード例 #14
0
 def sale_form(id):
     product = db.get_by_id(db.open_db(db_url), id)
     return render_template('sale.html', product=product)
コード例 #15
0
 def details_by_id(id):
     product = db.get_by_id(db.open_db(db_url), id)
     return render_template('details.html', product=product)