def handle_endtag(self, tag):
 #       print "Encountered an end tag :", tag
        if tag == "table":
            self.section = "End"
        elif self.section == "Table":
            if tag == "td" and self.subSection > 3:
                if self.currentData == "":
                    self.playerData += "0,"
                else:
                    self.playerData += self.currentData + ","
            elif tag == "th" and self.subSection == 3:
                theHeader = self.currentData
                while self.headers.has_key(theHeader):
                    theHeader += 'a'
                self.headers[theHeader] = self.index
                #print (theHeader + ":%d" % self.index)
                self.index += 1
            elif tag == "tr" and self.subSection > 3:
                #encounted an end of player row
                fieldArray = self.playerData.split(',')
                #query for player based on name (field 1) and date (field 4)
                #print 'processing ' + unicode(fieldArray[1], errors="ignore")
                newPlayer = Player.findPlayer(unicode(fieldArray[1], errors="ignore"), fieldArray[4])
                if newPlayer is None:
                    newPlayer = Player()
                newPlayer.initFromString(self.playerData, self.headers, self.leagueConsts)
                newPlayer.save()
                self.playerData = ""
        self.currentData = ""
Beispiel #2
0
    def initFromString(self, year, dataString, headerDict):
        fieldArray = dataString.split(',')
        self.Position = fieldArray[headerDict['POS']]
        self.Name = unicode(fieldArray[headerDict['Name']], errors="ignore")
        self.DOB = fieldArray[headerDict['DOB']]

        player = Player.findPlayer(self.Name, self.DOB)
        if not player:
            print "No Player found for " + self.Name + self.DOB

        self.PlayerId = player

        self.Year = year

        self.AB = int(fieldArray[headerDict['AB']])
        hits = int(fieldArray[headerDict['H']])
        doubles = int(fieldArray[headerDict['2B']])
        triples = int(fieldArray[headerDict['3B']])
        homeRuns = int(fieldArray[headerDict['HR']])
        walks = int(fieldArray[headerDict['BB']])
        self.IP = float(fieldArray[headerDict['IP']])

        strikeouts = int(fieldArray[headerDict['K']])
        homeRunsAgainst  = int(fieldArray[headerDict['HRa']])
        walksAgainst = int(fieldArray[headerDict['BBa']])

        sb = int(fieldArray[headerDict['SB']])
        cs = int(fieldArray[headerDict['CS']])
        self.UZR = float(fieldArray[headerDict['ZR']])

        singles = hits - doubles - triples - homeRuns
        self.wOBA = BaseballFunctions.rawWOBA(self.AB, walks, singles, doubles, triples, homeRuns)
        self.wRAA = BaseballFunctions.rawWRAA(self.AB, self.wOBA, walks)
        self.FIP = BaseballFunctions.rawFIP(self.IP, strikeouts, homeRunsAgainst, walksAgainst)

        self.wSB = BaseballFunctions.rawWSB(sb, cs)

        self.bWAR = (self.wRAA + self.wSB + self.UZR)/10
        self.pWAR = BaseballFunctions.rawPWAR(self.IP, self.FIP)

        class Meta:
            order_by = ('Name',)