예제 #1
0
    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
예제 #2
0
    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
예제 #3
0
    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)
예제 #4
0
    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)
예제 #5
0
    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
예제 #6
0
    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
예제 #7
0
    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
예제 #8
0
    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
예제 #9
0
 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)
예제 #10
0
파일: GM.py 프로젝트: garyliu33/lucaschess
 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)
예제 #11
0
 def damePV(self, fila):
     xpv = self.field(fila, "XPV")
     return xpv2pv(xpv)
예제 #12
0
 def damePV(self, fila):
     xpv = self.field(fila, "XPV")
     return xpv2pv(xpv)