def recrearSTAT(self, dispatch, depth): self.dbSTAT.reset(depth) recno = 0 self.filterPV("") reccount = self.dbf.reccount() dispatch(0, reccount) if reccount: while True: self.dbf.goto(recno) pv = xpv2pv(self.dbf.reg.XPV) result = self.dbf.reg.RESULT self.dbSTAT.append(pv, result) if recno % 100 == 0: resp = dispatch(recno, reccount) if not resp: return recno += 1 if recno >= reccount: if self.dbf.siBufferPendiente: self.dbf.leerMasBuffer(chunk=3000) reccount = self.dbf.reccount() if recno >= reccount: break else: break
def borrarLista(self, lista): for recno in lista: self.dbf.goto(recno) reg = self.dbf.reg pv = xpv2pv(reg.XPV) result = reg.RESULT self.appendSTAT(pv, result, -1, reg.WHITE, reg.BLACK) self.dbf.borrarLista(lista) self.dbf.leerBuffer(segundos=self.segundosBuffer)
def cambiarUno(self, recno, nuevoPGN, pvNue, dicS_PGN): siNuevo = recno is None if not siNuevo: self.dbf.goto(recno) reg = self.dbf.reg pvAnt = xpv2pv(reg.XPV) resAnt = reg.RESULT resNue = dicS_PGN.get("Result", "*") br = self.dbf.baseRegistro() br.XPV = pv2xpv(pvNue) br.EVENT = dicS_PGN.get("Event", "") br.SITE = dicS_PGN.get("Site", "") br.DATE = dicS_PGN.get("Date", "") br.WHITE = dicS_PGN.get("White", "") br.BLACK = dicS_PGN.get("Black", "") br.RESULT = resNue br.PLIES = "%3d" % (pvNue.strip().count(" ") + 1,) br.ECO = dicS_PGN.get("ECO", "") br.WHITEELO = dicS_PGN.get("WhiteElo", "") br.BLACKELO = dicS_PGN.get("BlackElo", "") br.PGN = Util.var2blob(nuevoPGN) siRepetido = False if siNuevo: try: self.dbf.insertar(br, okCommit=True, okCursorClose=True) self.appendSTAT(pvNue, resNue, +1, br.WHITE, br.BLACK) except: siRepetido = True else: try: self.dbf.modificarReg(recno, br) if pvAnt != pvNue or resAnt != resNue: self.appendSTAT(pvAnt, resAnt, -1, reg.WHITE, reg.BLACK) self.appendSTAT(pvNue, resNue, +1, br.WHITE, br.BLACK) except: siRepetido = True return not siRepetido
def cambiarUno(self, recno, nuevoPGN, pvNue, dicS_PGN): siNuevo = recno is None if not siNuevo: self.dbf.goto(recno) reg = self.dbf.reg pvAnt = xpv2pv(reg.XPV) resAnt = reg.RESULT resNue = dicS_PGN.get("Result", "*") br = self.dbf.baseRegistro() br.XPV = pv2xpv(pvNue) br.EVENT = dicS_PGN.get("Event", "") br.SITE = dicS_PGN.get("Site", "") br.DATE = dicS_PGN.get("Date", "") br.WHITE = dicS_PGN.get("White", "") br.BLACK = dicS_PGN.get("Black", "") br.RESULT = resNue br.PLIES = "%3d" % (pvNue.strip().count(" ") + 1, ) br.ECO = dicS_PGN.get("ECO", "") br.WHITEELO = dicS_PGN.get("WhiteElo", "") br.BLACKELO = dicS_PGN.get("BlackElo", "") br.PGN = Util.var2blob(nuevoPGN) siRepetido = False if siNuevo: try: self.dbf.insertar(br, okCommit=True, okCursorClose=True) self.appendSTAT(pvNue, resNue, +1, br.WHITE, br.BLACK) except: siRepetido = True else: try: self.dbf.modificarReg(recno, br) if pvAnt != pvNue or resAnt != resNue: self.appendSTAT(pvAnt, resAnt, -1, reg.WHITE, reg.BLACK) self.appendSTAT(pvNue, resNue, +1, br.WHITE, br.BLACK) except: siRepetido = True return not siRepetido
def recrearSTATplayer(self, dispatch, depth, player): self.dbSTAT = TreeSTAT(self.nomFichero + "-stat-player") self.dbSTATplayer = self.dbSTAT player = player.strip() siEnd = player.startswith("*") siSta = player.endswith("*") self.player = (player.strip().strip("*").upper(), siSta, siEnd, player) self.dbSTAT.reset(depth) recno = 0 self.filterPV("") reccount = self.dbf.reccount() dispatch(0, reccount) while True: self.dbf.goto(recno) reg = self.dbf.reg pv = xpv2pv(reg.XPV) result = reg.RESULT if self.esPlayer(reg.WHITE): self.dbSTAT.appendColor(pv, result, True) elif self.esPlayer(reg.BLACK): self.dbSTAT.appendColor(pv, result, False) if recno % 100 == 0: resp = dispatch(recno, reccount) if not resp: return recno += 1 if recno >= reccount: if self.dbf.siBufferPendiente: self.dbf.leerMasBuffer(chunk=3000) reccount = self.dbf.reccount() if recno >= reccount: break else: break
def __init__(self, linea): xpv, self.event, self.oponent, self.date, self.opening, self.result, self.color = linea.split( "|") self.liPV = xpv2pv(xpv).split(" ") self.lenPV = len(self.liPV)
def __init__(self, linea): xpv, self.event, self.oponent, self.date, self.opening, self.result, self.color = linea.split("|") self.liPV = xpv2pv(xpv).split(" ") self.lenPV = len(self.liPV)
def damePV(self, fila): xpv = self.field(fila, "XPV") return xpv2pv(xpv)