Beispiel #1
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')))
Beispiel #2
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)
Beispiel #3
0
def lineup_submit():
    if not current_user:
        abort(401)
    else:
        deadline = current_gameweek()['deadline']

        if deadline < datetime.now():
            flash(
                "This week's lineup deadline has passed. Your lineup changes have not been saved."
            )
        else:
            players = get_lineup(current_user.get_name())
            for player in players:
                if request.form.get('startercheck%s' % player['_id'],
                                    '') == 'on':
                    player['startingxi'] = '1'
                else:
                    player['startingxi'] = '0'

            if valid_formation(player for player in players
                               if player['startingxi'] == '1'):
                db.save_all(players, 'players')
                flash('Lineup saved')
            else:
                flash(
                    'Lineup reverted as was not a valid formation (please use 1 G, 3-5 D, 3-5 M, 1-3 F)'
                )

        return redirect(url_for('lineup'))
Beispiel #4
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')))
Beispiel #5
0
def team(userid):
    user = load_user(userid)

    if not user:
        abort(404)

    players = get_lineup(user.get_name())

    cgw = current_gameweek()
    claims = db.get('claims', {'user': userid})

    if cgw['waiver'] < datetime.now():
        recent_changes = sorted([
            claim for claim in claims
            if (claim['week'] == cgw['week'] and claim['status'] == 'success')
        ],
                                key=lambda claim: claim['priority'])

    else:
        recent_changes = sorted([
            claim for claim in claims
            if (claim['week'] == (cgw['week'] -
                                  1) and claim['status'] == 'success')
        ],
                                key=lambda claim: claim['priority'])

    return render_template('team.html',
                           players=players,
                           activepage='team',
                           user=user,
                           next_opponents=next_opponents(),
                           recent_changes=recent_changes)
Beispiel #6
0
def schedule():
	gameweeks = db.get('gameweeks')
	cgw = current_gameweek()
	gw = int(request.args.get('week', cgw['week']))

	pagin = pagination(gw, len(gameweeks))
	gameweek = gameweeks[gw - 1]

	return render_template('schedule.html', activepage="schedule", gameweek=gameweek, pagination=pagin)
Beispiel #7
0
def lineup():
    if current_user:
        players = get_lineup(current_user.get_name())
    deadline = current_gameweek()['deadline']
    return render_template('lineup.html',
                           players=players,
                           activepage="lineup",
                           current_user=current_user,
                           next_opponents=next_opponents(),
                           deadline=deadline)
Beispiel #8
0
def teamofthemonth():
	from manage import get_player

	gw_now = current_gameweek()

	players = [get_player(p) for p in ('butland', 'glen johns', 'kosci', 'smalling', 'bellerin', 'wijna', 'de bruyne', 'ozil', 'graziano p', 'ighalo', 'jamie vardy')]

	for player in players:
		player['waiver'] = waiver_status(player, gw_now['week'], gw_now['deadline'], gw_now['waiver'], next_gameweek()['waiver'])

	return render_template('players.html', activepage='players', pagination=pagination(1,1), players=players, query='', pos='', sorttype='score', filt='all')
Beispiel #9
0
def players():
    query = unidecode(unicode(request.args.get('q', '').lower()))
    pos = request.args.get('p', '').upper()
    if pos not in ('G', 'D', 'M', 'F', ''):
        pos = ''

    sorttype = request.args.get('s', 'score').lower()
    if sorttype not in ('score', 'form'):
        sorttype = 'score'

    filt = request.args.get('f', 'all')
    if filt not in ('all', 'free'):
        filt = 'all'

    def search(playername):
        return (query == '') or (query in playername)

    def status(team):
        return (filt == 'all') or (team == '')

    sort = dict(score=sort_player_score, form=sort_player_form)[sorttype]

    players = sorted(db.get(
        'players', {
            'position': lambda x: pos in x,
            'searchname': search,
            'club': lambda x: x != '',
            'team': status
        }),
                     key=sort)

    pages = int(ceil(len(players) / 15.0))
    page = int(request.args.get('pg', 1))

    pagin = pagination(page, pages)

    players = players[((page - 1) * 15):(page * 15)]

    gw_now = current_gameweek()

    for player in players:
        player['waiver'] = waiver_status(player, gw_now['week'],
                                         gw_now['deadline'], gw_now['waiver'],
                                         next_gameweek()['waiver'])

    return render_template('players.html',
                           activepage="players",
                           pagination=pagin,
                           players=players,
                           query=query,
                           pos=pos,
                           sorttype=sorttype,
                           filt=filt)
Beispiel #10
0
def schedule():
    gameweeks = db.get('gameweeks')
    cgw = current_gameweek()
    gw = int(request.args.get('week', cgw['week']))

    pagin = pagination(gw, len(gameweeks))
    gameweek = gameweeks[gw - 1]

    return render_template('schedule.html',
                           activepage="schedule",
                           gameweek=gameweek,
                           pagination=pagin)
Beispiel #11
0
def waiver_claims():
    cgw = current_gameweek()
    wgw = waiver_gameweek()

    print 'cgw %s' % cgw['week']
    print 'wgw %s' % wgw['week']

    view = request.args.get('view', 'own')

    if current_user.get_id() is None:
        view = 'league'

    current_claims = sorted([
        claim for claim in db.get(
            'claims', dict(user=current_user.get_id(), week=wgw['week']))
    ],
                            key=lambda claim: claim['priority'])

    if cgw['week'] == wgw['week']:
        week = int(request.args.get('week', cgw['week'] - 1))
    else:
        week = int(request.args.get('week', cgw['week']))

    claimquery = dict(week=week)
    tradequery = dict(week=week)
    if view == 'league':
        claimquery.update(status='success')
    else:  # view == 'own' or somehow still omitted at this point
        claimquery.update(user=current_user.get_id())

    prev_claims = sorted(db.get('claims', claimquery),
                         key=lambda claim:
                         (claim.get('order', 100), claim['priority']))
    trades = db.get('trades', tradequery)
    if view != 'league':
        trades = [
            trade for trade in trades
            if current_user.get_id() in (trade['first']['userid'],
                                         trade['second']['userid'])
        ]

    return render_template('waivers.html',
                           activepage='waivers',
                           current_claims=current_claims,
                           prev_claims=prev_claims,
                           trades=trades,
                           current_claim_count=len(current_claims),
                           week_pagination=week_pagination(week),
                           waiver_deadline=wgw['waiver'],
                           view=view)
Beispiel #12
0
def team(userid):
	user = load_user(userid)

	if not user:
		abort(404)

	players = get_lineup(user.get_name())

	cgw = current_gameweek()
	claims = db.get('claims', {'user': userid})

	if cgw['waiver'] < datetime.now():
		recent_changes = sorted([claim for claim in claims if (claim['week'] == cgw['week'] and claim['status'] == 'success')],
								key=lambda claim: claim['priority'])

	else:
		recent_changes = sorted([claim for claim in claims if (claim['week'] == (cgw['week'] - 1) and claim['status'] == 'success')],
								key=lambda claim: claim['priority'])

	return render_template('team.html', players=players, activepage='team', user=user, next_opponents=next_opponents(),
										recent_changes=recent_changes)
Beispiel #13
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)
Beispiel #14
0
def players():
	query = unidecode(unicode(request.args.get('q', '').lower()))
	pos = request.args.get('p', '').upper()
	if pos not in ('G', 'D', 'M', 'F', ''):
		pos = ''

	sorttype = request.args.get('s', 'score').lower()
	if sorttype not in ('score', 'form'):
		sorttype = 'score'

	filt = request.args.get('f', 'all')
	if filt not in ('all', 'free'):
		filt = 'all'

	def search(playername):
		return (query == '') or (query in playername)

	def status(team):
		return (filt == 'all') or (team == '')

	sort = dict(score=sort_player_score,
				form=sort_player_form)[sorttype]

	players = sorted(db.get('players', {'position': lambda x: pos in x, 'searchname': search, 'club': lambda x: x != '', 'team': status}), key=sort)

	pages = int(ceil(len(players) / 15.0))
	page = int(request.args.get('pg', 1))

	pagin = pagination(page, pages)

	players = players[((page - 1) * 15):(page * 15)]

	gw_now = current_gameweek()

	for player in players:
		player['waiver'] = waiver_status(player, gw_now['week'], gw_now['deadline'], gw_now['waiver'], next_gameweek()['waiver'])

	return render_template('players.html', activepage="players", pagination=pagin, players=players, query=query, pos=pos, sorttype=sorttype, filt=filt)
Beispiel #15
0
def lineup_submit():
	if not current_user:
		abort(401)
	else:
		deadline = current_gameweek()['deadline']

		if deadline < datetime.now():
			flash("This week's lineup deadline has passed. Your lineup changes have not been saved.")
		else:
			players = get_lineup(current_user.get_name())
			for player in players:
				if request.form.get('startercheck%s' % player['_id'], '') == 'on':
					player['startingxi'] = '1'
				else:
					player['startingxi'] = '0'

			if valid_formation(player for player in players if player['startingxi'] == '1'):
				db.save_all(players, 'players')
				flash('Lineup saved')
			else:
				flash('Lineup reverted as was not a valid formation (please use 1 G, 3-5 D, 3-5 M, 1-3 F)')

		return redirect(url_for('lineup'))
Beispiel #16
0
def teamofthemonth():
    from manage import get_player

    gw_now = current_gameweek()

    players = [
        get_player(p) for p in ('butland', 'glen johns', 'kosci', 'smalling',
                                'bellerin', 'wijna', 'de bruyne', 'ozil',
                                'graziano p', 'ighalo', 'jamie vardy')
    ]

    for player in players:
        player['waiver'] = waiver_status(player, gw_now['week'],
                                         gw_now['deadline'], gw_now['waiver'],
                                         next_gameweek()['waiver'])

    return render_template('players.html',
                           activepage='players',
                           pagination=pagination(1, 1),
                           players=players,
                           query='',
                           pos='',
                           sorttype='score',
                           filt='all')
Beispiel #17
0
def waiver_claims():
	cgw = current_gameweek()
	wgw = waiver_gameweek()

	print 'cgw %s' % cgw['week']
	print 'wgw %s' % wgw['week']

	view = request.args.get('view', 'own')

	if current_user.get_id() is None:
		view = 'league'

	current_claims = sorted([claim for claim in  db.get('claims', dict(user=current_user.get_id(), week=wgw['week']))],
							key=lambda claim: claim['priority'])

	if cgw['week'] == wgw['week']:
		week = int(request.args.get('week', cgw['week'] - 1))
	else:
		week = int(request.args.get('week', cgw['week']))

	claimquery = dict(week=week)
	tradequery = dict(week=week)
	if view == 'league':
		claimquery.update(status='success')
	else: # view == 'own' or somehow still omitted at this point
		claimquery.update(user=current_user.get_id())

	prev_claims = sorted(db.get('claims', claimquery),
						 key=lambda claim: (claim.get('order', 100), claim['priority']))
	trades = db.get('trades', tradequery)
	if view != 'league':
		trades = [trade for trade in trades if current_user.get_id() in (trade['first']['userid'], trade['second']['userid'])]

	return render_template('waivers.html', activepage='waivers', current_claims=current_claims, prev_claims=prev_claims,
										   trades=trades, current_claim_count=len(current_claims),
										   week_pagination=week_pagination(week), waiver_deadline=wgw['waiver'], view=view)
Beispiel #18
0
def lineup():
	if current_user:
		players = get_lineup(current_user.get_name())
	deadline = current_gameweek()['deadline']
	return render_template('lineup.html', players=players, activepage="lineup", current_user=current_user,
										  next_opponents=next_opponents(), deadline=deadline)