Ejemplo n.º 1
0
 def getMatch(self, matchElement, teams, players, leagueName):
     answer = MatchInReport()
     dateTime = DateFormatter.parseDateTimeFromString(
         matchElement.find("date").text)
     answer.date = dateTime.date()
     answer.time = dateTime.time()
     answer.court = matchElement.find("pitch").text
     htElement = matchElement.find("homeTeam")
     homeTeamId = htElement.get("id")
     answer.homeTeamId = homeTeamId
     answer.homeTeamName = teams.get(homeTeamId)
     awayTeamId = matchElement.find("awayTeam").get("id")
     answer.awayTeamId = awayTeamId
     answer.awayTeamName = teams.get(awayTeamId)
     answer.leagueName = leagueName
     playedMatchElement = matchElement.find("playedMatch")
     if playedMatchElement is not None:
         answer.innings = self.getInningsList(playedMatchElement, teams,
                                              players)
     awardedMatchElement = matchElement.find("awardedMatch")
     if awardedMatchElement is not None:
         answer.award = self.getAwardedMatchDetails(awardedMatchElement,
                                                    homeTeamId, awayTeamId,
                                                    teams)
     return answer
Ejemplo n.º 2
0
 def getAllMatchDatesWithCompletedMatches(self, rootElement, dateToExclude=None):
     answer = set()
     for l in rootElement.findall("league"):
         for m in l.findall("match"):
             if self.isComplete(m):
                 date = DateFormatter.parseDateTimeFromString(m.find("date").text).date()
                 if date != dateToExclude: 
                     answer.add(date)
     return answer
Ejemplo n.º 3
0
 def getAllMatchDatesWithCompletedMatches(self,
                                          rootElement,
                                          dateToExclude=None):
     answer = set()
     for l in rootElement.findall("league"):
         for m in l.findall("match"):
             if self.isComplete(m):
                 date = DateFormatter.parseDateTimeFromString(
                     m.find("date").text).date()
                 if date != dateToExclude:
                     answer.add(date)
     return answer
Ejemplo n.º 4
0
 def getMatch(self, matchElement, teams, league):
     answer = MatchInReport()
     datetime = DateFormatter.parseDateTimeFromString(matchElement.find("date").text)
     answer.date = datetime.date()
     answer.time = datetime.time()
     answer.court = matchElement.find("pitch").text
     answer.homeTeamId = matchElement.find("homeTeam").get("id")
     answer.homeTeamName = teams[answer.homeTeamId]
     answer.awayTeamId = matchElement.find("awayTeam").get("id")
     answer.awayTeamName = teams[answer.awayTeamId]
     if league is not None:
         answer.leagueId = league.get("id")
         answer.leagueName = league.find("name").text
     return answer
Ejemplo n.º 5
0
 def getAverages(self,
                 rootElement,
                 leagues,
                 teams,
                 players,
                 batting=False,
                 bowling=False):
     answer = AveragesReport()
     lastCompleteMatchDate = None
     lastScheduledMatchDate = None
     incompleteMatchesByDate = {}
     battingAverages = None if not batting else {}
     bowlingAverages = None if not bowling else {}
     if batting or bowling:
         for leagueElement in rootElement.findall("league"):
             leagueId = leagueElement.get("id")
             if leagueId in leagues.keys():
                 for matchElement in leagueElement.findall("match"):
                     relevant, complete = self.updateAveragesFromMatch(
                         matchElement, teams, players, battingAverages,
                         bowlingAverages)
                     if relevant:
                         date = DateFormatter.parseDateTimeFromString(
                             matchElement.find("date").text).date()
                         if lastScheduledMatchDate is None or lastScheduledMatchDate < date:
                             lastScheduledMatchDate = date
                         if complete:
                             if lastCompleteMatchDate is None or lastCompleteMatchDate < date:
                                 lastCompleteMatchDate = date
                         else:
                             count = incompleteMatchesByDate.get(date, 0)
                             incompleteMatchesByDate[date] = count + 1
     answer.lastCompleteMatchDate = lastCompleteMatchDate
     answer.lastScheduledMatchDate = lastScheduledMatchDate
     answer.complete = len(incompleteMatchesByDate) == 0
     if lastCompleteMatchDate is not None:
         toCome = 0
         for d in sorted(incompleteMatchesByDate.keys()):
             if d > lastCompleteMatchDate:
                 break
             toCome = toCome + incompleteMatchesByDate[d]
         answer.toCome = toCome
     if batting:
         answer.battingAverages = battingAverages.values()
     if bowling:
         answer.bowlingAverages = bowlingAverages.values()
     answer.leagueName = leagues.values()[0] if len(leagues) == 1 else None
     answer.teamName = teams.values()[0] if len(teams) == 1 else None
     return answer
Ejemplo n.º 6
0
 def loadMatchInfo(self, rootElement, homeId, awayId):
     answer = None
     if homeId is not None and awayId is not None:
         for league in rootElement.findall("league"):
             teams = self.getTeams(league, homeId, awayId)
             if teams is not None:
                 for match in league.findall("match"):
                     if homeId == match.find("homeTeam").get("id") and awayId == match.find("awayTeam").get("id"):
                         matchDate = DateFormatter.parseDateTimeFromString(match.find("date").text)
                         court = match.find("pitch").text
                         leagueId = league.get("id")
                         leagueName = league.get("name").text
                         answer = MatchInfo(matchDate, court, leagueId, leagueName, teams) 
                         break
             if answer is not None:
                 break
     return answer
Ejemplo n.º 7
0
 def getMatch(self, matchElement, teams, players, leagueName):
     answer = MatchInReport()
     dateTime = DateFormatter.parseDateTimeFromString(matchElement.find("date").text)
     answer.date = dateTime.date()
     answer.time = dateTime.time()
     answer.court = matchElement.find("pitch").text
     htElement = matchElement.find("homeTeam")
     homeTeamId = htElement.get("id")
     answer.homeTeamId = homeTeamId
     answer.homeTeamName = teams.get(homeTeamId) 
     awayTeamId = matchElement.find("awayTeam").get("id")
     answer.awayTeamId = awayTeamId
     answer.awayTeamName = teams.get(awayTeamId)
     answer.leagueName = leagueName
     playedMatchElement = matchElement.find("playedMatch")
     if playedMatchElement is not None:
         answer.innings = self.getInningsList(playedMatchElement, teams, players)
     awardedMatchElement = matchElement.find("awardedMatch")
     if awardedMatchElement is not None:
         answer.award = self.getAwardedMatchDetails(awardedMatchElement, homeTeamId, awayTeamId, teams)
     return answer
Ejemplo n.º 8
0
 def getAverages(self, rootElement, leagues, teams, players, batting=False, bowling=False):
     answer = AveragesReport()
     lastCompleteMatchDate = None
     lastScheduledMatchDate = None
     incompleteMatchesByDate = {} 
     battingAverages = None if not batting else {}
     bowlingAverages = None if not bowling else {}
     if batting or bowling:
         for leagueElement in rootElement.findall("league"):
             leagueId = leagueElement.get("id")
             if leagueId in leagues.keys():
                 for matchElement in leagueElement.findall("match"):
                     relevant, complete = self.updateAveragesFromMatch(matchElement, teams, players, battingAverages, bowlingAverages)
                     if relevant:
                         date = DateFormatter.parseDateTimeFromString(matchElement.find("date").text).date()
                         if lastScheduledMatchDate is None or lastScheduledMatchDate < date:
                             lastScheduledMatchDate = date
                         if complete:
                             if lastCompleteMatchDate is None or lastCompleteMatchDate < date:
                                 lastCompleteMatchDate = date
                         else:
                             count = incompleteMatchesByDate.get(date, 0)
                             incompleteMatchesByDate[date] = count + 1
     answer.lastCompleteMatchDate = lastCompleteMatchDate
     answer.lastScheduledMatchDate = lastScheduledMatchDate
     answer.complete = len(incompleteMatchesByDate) == 0
     if lastCompleteMatchDate is not None:
         toCome = 0
         for d in sorted(incompleteMatchesByDate.keys()):
             if d > lastCompleteMatchDate:
                 break
             toCome = toCome + incompleteMatchesByDate[d]
         answer.toCome = toCome
     if batting:
         answer.battingAverages = battingAverages.values()
     if bowling:
         answer.bowlingAverages = bowlingAverages.values()
     answer.leagueName = leagues.values()[0] if len(leagues) == 1 else None
     answer.teamName = teams.values()[0] if len(teams) == 1 else None
     return answer
Ejemplo n.º 9
0
 def getLeagueTable(self, leagueElement):
     answer = LeagueTableInReport()
     answer.leagueName = leagueElement.find("name").text
     elem = leagueElement.find("teamsPromoted")
     answer.promoted = 0 if elem is None else int(elem.text)
     elem = leagueElement.find("teamsRelegated")
     answer.relegated = 0 if elem is None else int(elem.text)
     answer.tableRows = self.createTableRows(leagueElement)
     lastCompleteMatchDate = None
     lastScheduledMatchDate = None
     incompleteMatchesByDate = {} 
     for m in leagueElement.findall("match"):
         complete = self.updateTableRowsFromMatch(m, answer.tableRows)
         date = DateFormatter.parseDateTimeFromString(m.find("date").text).date()
         if lastScheduledMatchDate is None or lastScheduledMatchDate < date:
             lastScheduledMatchDate = date
         if complete:
             if lastCompleteMatchDate is None or lastCompleteMatchDate < date:
                 lastCompleteMatchDate = date
         else:
             incompleteMatchesByDate[date] = incompleteMatchesByDate.get(date, 0) + 1
     answer.lastCompleteMatchDate = lastCompleteMatchDate
     answer.lastScheduledMatchDate = lastScheduledMatchDate
     answer.complete = len(incompleteMatchesByDate) == 0
     if lastCompleteMatchDate is not None:
         toCome = 0
         for d in sorted(incompleteMatchesByDate.keys()):
             if d > lastCompleteMatchDate:
                 break
             toCome = toCome + incompleteMatchesByDate[d]
         answer.toCome = toCome
     self.markPromotedRelegatedChampions(answer)
     tableNotesElement = leagueElement.find("tableNotes")
     tableNotesText = None if tableNotesElement is None else tableNotesElement.text
     if tableNotesText is not None:
         tableNotesText = tableNotesText.strip()
         answer.notes = [s.strip() for s in string.split(tableNotesText, "\n")]
     return answer
Ejemplo n.º 10
0
 def testParseDateTimeFromString(self):
     theString = "2013-07-31.17:00"
     expectedResult = datetime.datetime(2013, 7, 31, 17, 0)
     result = DateFormatter.parseDateTimeFromString(theString)
     self.assertEqual(expectedResult, result)
Ejemplo n.º 11
0
 def isOnDate(self, matchElement, date):
     mDate = DateFormatter.parseDateTimeFromString(matchElement.find("date").text).date()
     answer = mDate == date
     return answer
Ejemplo n.º 12
0
 def isOnDate(self, matchElement, date):
     mDate = DateFormatter.parseDateTimeFromString(
         matchElement.find("date").text).date()
     answer = mDate == date
     return answer