コード例 #1
0
ファイル: test_team.py プロジェクト: HogRoast/sweeper
    def test_select(self):
        objs = TestTeam.db.select(Team())
        self.assertEqual(len(objs), 2)
        self.assertEqual(objs[0].getName(), 'team name TD')

        self.assertEqual(objs[0].getLeague(), 'league mnemonic TD')
        self.assertEqual(objs[0].getSeason(), 'team season TD')

        self.assertEqual(objs[1].getName(), 'team name TD2')

        self.assertEqual(objs[1].getLeague(), 'league mnemonic TD2')
        self.assertEqual(objs[1].getSeason(), 'team season TD2')

        objs = TestTeam.db.select(Team('team name TD'))
        self.assertEqual(len(objs), 1)
        self.assertEqual(objs[0].getName(), 'team name TD')

        self.assertEqual(objs[0].getLeague(), 'league mnemonic TD')
        self.assertEqual(objs[0].getSeason(), 'team season TD')

        objs = TestTeam.db.select(
            Team.createAdhoc({
                'league': 'league mnemonic TD',
                'season': 'team season TD'
            }))
        self.assertEqual(len(objs), 1)
        self.assertEqual(objs[0].getName(), 'team name TD')

        self.assertEqual(objs[0].getLeague(), 'league mnemonic TD')
        self.assertEqual(objs[0].getSeason(), 'team season TD')
コード例 #2
0
ファイル: test_team.py プロジェクト: HogRoast/sweeper
 def test_keys_adhoc(self):
     l = Team.createAdhoc(None)
     self.assertEqual(l.getTable(), 'team')
     self.assertTrue(l._keys.getFields() is None)
コード例 #3
0
ファイル: genleaguetable.py プロジェクト: HogRoast/sweeper
def genLeagueTable(log:Logger, league:str, season:str, date:str=None, \
        show:bool=False):
    '''
    Generate a league table for the subject league and season

    :param log: a logging object
    :param league: the subject league
    :param season: the subject season
    :param date: the date string up to which to generate the league YYYY-MM-DD
    :param show: displays any tables as HTML when True
    '''
    log.info('Generating league table for ' \
            'league <{}> and season <{}>'.format(league, season))

    config = getSweeperConfig()
    dbName = config['dbName']
    log.debug('Opening database: {}'.format(dbName))

    with Database(dbName, SQLite3Impl()) as db, db.transaction() as t:     
        try:
            league = db.select(League(league))[0]
        except:
            log.critical('No league matching the provided mnemonic exists')
            sys.exit(3)
        try:
            season = db.select(Season(season))[0]
        except:
            log.critical('No season matching the provided string exists')
            sys.exit(4)

        ubnd =  date if date is not None else season.getU_Bnd_Date()
        keys = {'league' : league.getMnemonic(), '!result' : '', '>date' : \
                season.getL_Bnd_Date(), '<date' : ubnd} 
        matches = [m for m in db.select(Match.createAdhoc(keys))]
        log.info('{} {} matches found'.format(len(matches), \
                league.getMnemonic()))

        keys = {'league' : league.getMnemonic(), 'season' : season.getName()}
        teams = db.select(Team.createAdhoc(keys)) 

        table = dict([(t.getName(), Form()) for t in teams])
        for m in matches:
            table[m.getHome_Team()] = h = table.get(m.getHome_Team(), Form())
            table[m.getAway_Team()] = a = table.get(m.getAway_Team(), Form())
            h.played += 1
            a.played += 1
            h.glfor += m.getHome_Goals()
            h.glagn += m.getAway_Goals()
            h.gldif = h.glfor - h.glagn
            a.glfor += m.getAway_Goals()
            a.glagn += m.getHome_Goals()
            a.gldif = a.glfor - a.glagn
            if m.getResult() == 'H':
                h.won += 1
                h.points += 3
                a.lost += 1
            elif m.getResult() == 'D':
                h.drawn += 1
                h.points += 1
                a.drawn += 1
                a.points += 1
            elif m.getResult() == 'A':
                a.won += 1
                a.points += 3
                h.lost += 1
            else:
                raise Exception("Empty result, wasn't expecting that")

        headers = ['Team', 'P', 'W', 'D', 'L', 'F', 'A', 'GD', 'PTS']
        schema = ['{:<20}', '{:>3}', '{:>3}', '{:>3}', '{:>3}', '{:>3}', \
                '{:>3}', '{:>4}', '{:>4}']
        t = Table(headers=headers, schema=schema, title='{} Table'.format(\
                league.getDesc()))
        t.append([[row[0], *row[1].asList()] for row in  \
                sorted(sorted(table.items(), key=itemgetter(0)), \
                key=lambda x : (x[1].points, x[1].gldif, x[1].glfor), \
                reverse=True)])
        log.info(t)

        if show: t.asHTML(show)

        return t