def setCompetitionComb(self, index_cmb): self.competitions[index_cmb].clear() bd = Bbdd() idRegion = self.regionIndexToIdCmb[index_cmb].get( self.regions[index_cmb].currentIndex()) idSport = self.sportIndexToId.get( self.sports[index_cmb].currentIndex()) where = "region=" + str(idRegion) + " AND sport=" + str(idSport) try: data = bd.select("competition", "name", where) index = 0 self.competitionIndexToIdCmb[index_cmb] = {} for i in data: id = i[0] name = i[1] self.competitions[index_cmb].addItem(name) self.competitionIndexToIdCmb[index_cmb][index] = id index += 1 if index == 0: self.btnAccept.setDisabled(True) else: self.btnAccept.setDisabled(False) except: self.btnAccept.setDisabled(True) bd.close()
def accept(self): money = str(self.txtMoney.text()) data = [ self.cmbMonth.currentIndex(), self.txtYear.text(), self.txtName.text(), money ] columns = ["month", "year", "name", "money"] bbdd = Bbdd() bbdd.update(columns, data, "conjunta", "id=" + str(self.id)) bbdd.deleteWhere("conjunta_tipster", "conjunta=" + str(self.id)) for i in self.selected: if i in (0, 1): continue bbdd.insert(["conjunta", "tipster"], [self.id, i], "conjunta_tipster") bbdd.close() QMessageBox.information(self, _("Added"), _("New joint purchase added.")) self.close()
def initData(self): bd = Bbdd() name = bd.getValue(self.id, "tipster") self.txtName.setText(name) bd.close()
def initData(self): bd = Bbdd() name = bd.getValue(self.id, "region") self.txtRegion.setText(name) bd.close()
def initData(self): bd = Bbdd() data = bd.select("tipster", "name") self.listFree.clear() self.listSelected.clear() self.tipsterIndexToId = {} self.selectedIndexToId = {} index, index2 = 0, 0 for i in data: id = i[0] if id == 1: continue name = i[1] if id in self.selected: self.listSelected.addItem(name) self.selectedIndexToId[index2] = id index2 += 1 else: self.listFree.addItem(name) self.tipsterIndexToId[index] = id index += 1 bd.close()
def export(self): bd = Bbdd() file = OrderedDict() data = bd.select("bet") dataOds = [[ "Fecha", "Deporte", "Competicion", "Región", "Local", "Visitante", "Pick", "Casa", "Mercado", "Tipster", "Stake", "Unidad", "Resultado", "Beneficio", "Apuesta", "Cuota", "Gratuita" ]] for i in data: row = [] row.append(i[1]) row.append(bd.getValue(i[2], "sport")) row.append(bd.getValue(i[3], "competition")) row.append(bd.getValue(i[4], "region")) row.append(i[5]) row.append(i[6]) row.append(i[7]) row.append(bd.getValue(i[8], "bookie")) row.append(bd.getValue(i[9], "market")) row.append(bd.getValue(i[10], "tipster")) row.append(i[11]) row.append(i[12]) row.append(i[13]) row.append(i[14]) row.append(i[15]) row.append(i[16]) row.append("No" if i[17] == 0 else "Sí") dataOds.append(row) bd.close() file.update({"Apuestas": dataOds}) save_data(self.directory, file)
def initCombined(self): bd = Bbdd() data = bd.select("combined", None, "bet=" + str(self.id)) i = 0 for bet in data: self.addCombined() date = QDateTime.fromString(bet[2], "yyyy-MM-dd hh:mm:ss") self.dates[i].setDateTime(date) try: sport = key_from_value(self.sportIndexToId, bet[3]) self.sports[i].setCurrentIndex(sport) self.setRegionComb(i) region = key_from_value(self.regionIndexToIdCmb[i], bet[5]) self.regions[i].setCurrentIndex(region) self.setCompetitionComb(i) competition = key_from_value(self.competitionIndexToIdCmb[i], bet[4]) self.competitions[i].setCurrentIndex(competition) except: print("No data combined") self.players1[i].setCurrentText(bet[6]) self.players2[i].setCurrentText(bet[7]) self.picks[i].setText(bet[8]) self.results[i].setCurrentIndex(int(bet[9])) i += 1 bd.close()
def initCombined(self): bd = Bbdd() data = bd.select("combined", None, "bet=" + str(self.id)) i = 0 for bet in data: self.addCombined() date = QDateTime.fromString(bet[2], "yyyy-MM-dd hh:mm:ss") self.dates[i].setDateTime(date) sport = key_from_value(self.sportIndexToId, bet[3]) self.sports[i].setCurrentIndex(sport) self.setRegionComb(i) region = key_from_value(self.regionIndexToIdCmb[i], bet[5]) self.regions[i].setCurrentIndex(region) self.setCompetitionComb(i) competition = key_from_value(self.competitionIndexToIdCmb[i], bet[4]) self.competitions[i].setCurrentIndex(competition) self.players1[i].setCurrentText(bet[6]) self.players2[i].setCurrentText(bet[7]) self.picks[i].setText(bet[8]) result = { "Pendiente": 0, "Acertada": 1, "Fallada": 2, "Nula": 3, "Medio Acertada": 4, "Medio Fallada": 5, "Retirada": 6 }[bet[9]] self.results[i].setCurrentIndex(result) i += 1 bd.close()
def deleteItem(self): resultado = QMessageBox.question(self, _("Remove"), _("Are you sure you want to eliminate it?"), QMessageBox.Yes | QMessageBox.No, QMessageBox.No) if resultado == QMessageBox.Yes: bd = Bbdd() bd.delete("bonus", self.itemSelected) self.mainWindows.setCentralWidget(Bonus(self.mainWindows)) self.mainWindows.enableTools()
def update(self): if not self.isEmpty(): bd = Bbdd() msg = bd.update(["name", "country"], [self.name, self.country], "bookie", "id=" + self.id) bd.close() if msg != 0: msg = "Se ha producido un error al actualizar la BBDD" if self.ruta is not None: try: if not os.path.exists( expanduser("~") + "/.betcon/resources/bookies"): os.makedirs( expanduser("~") + "/.betcon/resources/bookies") copy2( self.ruta, expanduser("~") + "/.betcon/resources/bookies/" + self.id + ".png") img = Images( expanduser("~") + "/.betcon/resources/bookies/" + self.id + ".png") img.resize(100, 20) except: msg = "Imágen incorrecta" else: msg = "Faltan datos por introducir" return msg
def accept(self): money = str(str_to_float(self.txtMoney.text())) data = [ self.cmbMonth.currentIndex(), self.txtYear.text(), self.txtName.text(), money ] columns = ["month", "year", "name", "money"] bbdd = Bbdd() bbdd.update(columns, data, "conjunta", "id=" + str(self.id)) bbdd.deleteWhere("conjunta_tipster", "conjunta=" + str(self.id)) for i in self.selected: if i in (0, 1): continue bbdd.insert(["conjunta", "tipster"], [self.id, i], "conjunta_tipster") bbdd.close() QMessageBox.information(self, "Añadido", "Nueva conjunta añadida.") self.close()
def deleteWhere(table, where): bd = Bbdd() msg = bd.deleteWhere(table, where) bd.close() if msg != 0: msg = "Se ha producido un error al actualizar la BBDD" return msg
def delete(id): bd = Bbdd() msg = bd.delete("bookie", id) bd.close() if msg != 0: msg = "Se ha producido un error al actualizar la BBDD" return msg
def setCompetition(self): self.cmbCompetition.clear() bd = Bbdd() idRegion = self.regionIndexToId.get(self.cmbRegion.currentIndex()) idSport = self.sportIndexToId.get(self.cmbSport.currentIndex()) where = "region=" + str(idRegion) + " AND sport=" + str(idSport) data = bd.select("competition", "name", where) self.competitionIndexToId = {} index = 0 for i in data: id = i[0] name = i[1] self.cmbCompetition.addItem(name) self.competitionIndexToId[index] = id index += 1 if index == 0: self.btnAccept.setDisabled(True) else: self.btnAccept.setDisabled(False) bd.close()
def insert(self): if not self.isEmpty(): bd = Bbdd() msg = bd.insert(["name"], [self.name], "bookie") bd.close() else: msg = "Faltan datos por introducir" return msg
def setId(self, id): self.id = id bd = Bbdd() self.name, self.country = bd.select("bookie", None, "id=" + str(self.id), "name, country")[0] bd.close()
def deleteItem(self): resultado = QMessageBox.question( self, "Eliminar", "¿Estas seguro que desas eliminarlo?", QMessageBox.Yes | QMessageBox.No, QMessageBox.No) if resultado == QMessageBox.Yes: bd = Bbdd() bd.delete("bonus", self.itemSelected) self.mainWindows.setCentralWidget(Bonus(self.mainWindows)) self.mainWindows.enableTools()
def update(self): if not self.isEmpty(): bd = Bbdd() msg = bd.update(["name"], [self.name], "bookie", "id="+self.id) bd.close() if msg != 0: msg = "Se ha producido un error al actualizar la BBDD" else: msg = "Faltan datos por introducir" return msg
def sumBonus(where=None): bd = Bbdd() if where: where = "free='True' and " + where else: where = "free='True' " data = bd.sum("bonus", "money", where) bd.close() return data
def selectAll(): bd = Bbdd() data = bd.select("bookie", "name") items = [] for i in data: item = Bookie() item.setId(i[0]) items.append(item) bd.close() return items
def initData(self): bd = Bbdd() data = bd.select("tipster", "name") self.tipsterIndexToId = {} index = 0 for i in data: id = i[0] name = i[1] self.cmbTipster.addItem(name) self.tipsterIndexToId[index] = id index += 1 bd.close()
def setRegionComb(self, index_cmb): print(index_cmb) self.btnAccept.setDisabled(False) self.regions[index_cmb].clear() bd = Bbdd() idSport = self.sportIndexToId.get( self.sports[index_cmb].currentIndex()) where = " sport=" + str(idSport) data = bd.select("competition", None, where, "region") dataRegion = "" if len(data) > 0: sData = "(" j = 0 for i in data: if j == len(data) - 1: sData += str(i[0]) + ")" else: sData += str(i[0]) + ", " j += 1 where = " id in " + sData dataRegion = bd.select("region", "name", where) if len(dataRegion) < 1: self.btnAccept.setDisabled(True) bd.close() else: self.regionIndexToIdCmb[index_cmb] = {} index = 0 for i in dataRegion: id = i[0] name = i[1] self.regions[index_cmb].addItem(name) self.regionIndexToIdCmb[index_cmb][index] = id index += 1 bd.close() self.setCompetitionComb(index_cmb) else: self.btnAccept.setDisabled(True) bd.close() if len(data) == 0 or len(dataRegion): self.btnAccept.setDisabled(True) else: self.btnAccept.setDisabled(False)
def accept(self): data = [] data.append(self.txtDate.text()) data.append(self.cmbAccount.currentIndex() + 1) idBookie = self.bookieIndexToId.get(self.cmbBookie.currentIndex()) data.append(idBookie) if self.cmbType.currentIndex() == 1: type = "-" else: type = "" money = type + str(self.txtMoney.text()) money = str_to_float(money) data.append(money) columns = ["date", "account", "bookie", "money"] bbdd = Bbdd() bbdd.insert(columns, data, "movement") money *= -1 data = ["'+bank+'" + str(money)] columns = ["bank"] account = self.cmbAccount.currentIndex() bbdd.update(columns, data, "bank", "id=" + str(account + 1)) bbdd.close() QMessageBox.information(self, "Añadido", "Movimiento añadido.") self.close()
def initData(self): # cmbRegion bd = Bbdd() data = bd.select("region", "name") self.regionIndexToId = {} index = 0 for i in data: id = i[0] name = i[1] self.cmbRegion.addItem(name) self.regionIndexToId[index] = id index += 1 # cmbSport bd = Bbdd() data = bd.select("sport", "name") self.sportIndexToId = {} index = 0 for i in data: id = i[0] name = i[1] self.cmbSport.addItem(name) self.sportIndexToId[index] = id index += 1 bd.close()
def initTree(self): bd = Bbdd() data = bd.select("market", "name") items = [] for i in data: id = i[0] name = i[1] item = QTreeWidgetItem([name, str(id)]) items.append(item) self.treeMain.addTopLevelItems(items) self.treeMain.sortByColumn(0, QtCore.Qt.AscendingOrder) bd.close()
def getTipster(year=None, month=None): if year is not None: date = str(year) + "-" + str(month) sql = 'select tipster.name, sport.name, ' \ '(SELECT count(*) from bet as b1 WHERE b1.result in (1, 4) ' \ 'and b1.tipster = bet.tipster and b1.sport=bet.sport and b1.date LIKE "' + date + '%") as acierto, ' \ '(SELECT count(*) from bet as b1 WHERE b1.result in (2, 5) and b1.tipster = bet.tipster ' \ 'and b1.sport=bet.sport and b1.date LIKE "' + date + '%") as fallo, (SELECT SUM(profit) ' \ 'from bet as b1 WHERE b1.result <> 0 and b1.tipster = bet.tipster and b1.sport=bet.sport and b1.date LIKE "' + date + '%") as prof, count(*), ' \ 'SUM(bet), avg(stake), avg(quota) from bet, tipster, sport WHERE bet.tipster=tipster.id ' \ 'and bet.sport=sport.id and bet.date LIKE "' + date + '%" GROUP BY bet.tipster,bet.sport ' else: sql = 'SELECT tipster.name, sport.name, (SELECT count(*) FROM bet AS b1 WHERE b1.result IN ' \ '(1, 4) AND b1.tipster = bet.tipster AND b1.sport=bet.sport) AS acierto, ' \ '(SELECT count(*) FROM bet AS b1 WHERE b1.result IN (2, 5) AND ' \ 'b1.tipster = bet.tipster AND b1.sport=bet.sport) AS fallo, (SELECT SUM(profit) ' \ 'FROM bet AS b1 WHERE b1.result <> 0 AND b1.tipster = bet.tipster AND b1.sport = bet.sport) AS prof, count(*), ' \ 'SUM(bet), avg(stake), avg(quota) FROM bet, tipster, sport ' \ 'WHERE bet.tipster=tipster.id AND bet.sport=sport.id GROUP BY bet.tipster,bet.sport' bd = Bbdd() datasql = bd.executeQuery(sql) bd.close() data = [] for i in datasql: row = [] if i[4] is None: continue row.append(i[0]) # Tipster row.append(i[1]) # Sports row.append(str(i[5])) # Number of bets try: win = i[2] / (i[2] + i[3]) # Percentage of win bet except ZeroDivisionError: win = 0 win = win * 100 row.append("{0:.2f}%".format(round((win), 2))) row.append("{0:.2f}".format(round( (i[6]), 2)) + LibStats.coin) # Money bet row.append("{0:.2f}".format(round( (i[4]), 2)) + LibStats.coin) # Profit row.append("{0:.2f}".format(round((i[7]), 2))) # Average Stake row.append("{0:.2f}".format(round((i[8]), 2))) # Average Quota data.append(row) return data
def initTree(self): bd = Bbdd() data = bd.select("market", "name") index = 0 items = [] for i in data: index += 1 id = i[0] name = i[1] item = QTreeWidgetItem([str(index), str(id), name]) items.append(item) self.treeMain.addTopLevelItems(items) bd.close()
def getMonth(year=None, month=None, day=None): date = str(year) if month is not None and month is not "": date += "-" + str(month) if day is not None and day is not "": date += "-" + day sql = 'select SUM(bet), ' \ '(select SUM(profit) from bet as b1 WHERE profit>0 AND b1.date LIKE "' + date + '%"), ' \ '(select SUM(profit) from bet as b1 WHERE profit<0 AND b1.date LIKE "' + date + '%"), ' \ 'SUM(profit), (select SUM(bet) from bet as b1 WHERE b1.result=0 AND bet.date LIKE "' + date + '%"), ' \ 'AVG(quota), count(bet), (select COUNT(*) from bet as b1 WHERE profit>0 AND b1.date LIKE "' + date + '%"), ' \ '(select count(*) from bet as b1 WHERE profit<0 AND b1.result<>0 AND b1.date LIKE "' + date + '%"),' \ '(select count(*) from bet as b1 WHERE profit=0 AND b1.date LIKE "' + date + '%"), AVG(bet)' \ ' from bet WHERE bet.date LIKE "' + date + '%"' bd = Bbdd() datasql = bd.executeQuery(sql) bd.close() bonus = Bookie.sumBonus("date LIKE '" + date + "%'") datasql = datasql[0] if bonus is None: bonus = 0 if datasql[0] == 0: return [0, 0, 0, 0, 0, "0%", 0, 0, 0, 0, 0, "0%", 0] yi = "{0:.2f}%".format( round(((datasql[3] + bonus) / datasql[0]) * 100, 2)) quota = float("{0:.2f}".format(datasql[5], 2)) bet = float("{0:.2f}".format(datasql[10], 2)) aciertos = "{0:.2f}%".format(round((datasql[7] / datasql[6]) * 100, 2)) data0 = "{0:.2f}".format(round(datasql[0], 2)) data1 = 0.0 if datasql[1] is None else "{0:.2f}".format( round(datasql[1] + bonus, 2)) data2 = 0.0 if datasql[2] is None else "{0:.2f}".format( round(datasql[2], 2)) data3 = 0.0 if datasql[3] is None else "{0:.2f}".format( round(datasql[3] + bonus, 2)) data4 = 0.0 if datasql[4] is None else "{0:.2f}".format( round(datasql[4], 2)) data = [ data0, data1, data2, data3, data4, yi, quota, datasql[6], datasql[7], datasql[8], datasql[9], aciertos, bet ] return data
def getMarket(year=None, month=None): if year is not None: date = str(year)+"-"+str(month) sql = 'select market.name, sport.name, ' \ '(SELECT count(*) from bet as b1 WHERE b1.result in ("Acertada", "Medio Acertada") ' \ 'and b1.market = bet.market and b1.sport=bet.sport and b1.date LIKE "' + date + '%") as acierto, ' \ '(SELECT count(*) from bet as b1 WHERE b1.result in ("Fallada", "Medio Fallada") and b1.market = bet.market ' \ 'and b1.sport=bet.sport and b1.date LIKE "' + date + '%") as fallo, (SELECT SUM(profit) ' \ 'from bet as b1 WHERE b1.result <> "Pendiente" and b1.market = bet.market and b1.sport=bet.sport and b1.date LIKE "' + date + '%") as prof, count(*), ' \ 'SUM(bet), avg(stake), avg(quota) from bet, market, sport WHERE bet.market=market.id ' \ 'and bet.sport=sport.id and bet.date LIKE "' + date + '%" GROUP BY bet.market, bet.sport ' else: sql = 'SELECT market.name, sport.name, (SELECT count(*) FROM bet AS b1 WHERE b1.result IN ' \ '("Acertada", "Medio Acertada") AND b1.market = bet.market AND b1.sport=bet.sport) AS acierto, ' \ '(SELECT count(*) FROM bet AS b1 WHERE b1.result IN ("Fallada", "Medio Fallada") AND ' \ 'b1.market = bet.market AND b1.sport=bet.sport) AS fallo, (SELECT SUM(profit) ' \ 'FROM bet AS b1 WHERE b1.result <> "Pendiente" AND b1.market = bet.market AND b1.sport = bet.sport) AS prof, count(*), ' \ 'SUM(bet), avg(stake), avg(quota) FROM bet, market, sport ' \ 'WHERE bet.market=market.id AND bet.sport=sport.id GROUP BY bet.market, bet.sport' bd = Bbdd() datasql = bd.executeQuery(sql) bd.close() data = [] for i in datasql: if i[4] is None: continue row = [] row.append(i[0]) # Region row.append(i[1]) # Sports row.append(str(i[5])) # Number of bets try: win = i[2] / (i[2] + i[3]) # Percentage of win bet except ZeroDivisionError: win = 0 win = win * 100 row.append(str(win) + "%") row.append(str(i[6])) # Money bet row.append(str(i[4])) # Profit row.append(str(i[7])) # Average Stake row.append(str(i[8])) # Average Quota data.append(row) return data
def initTree(self): bd = Bbdd() data = bd.select("tipster_month", "year, month") items = [] for i in data: id = i[0] year = i[2] month = numberToMonth(i[1]+1) tipster = bd.getValue(i[3], "tipster") money = i[4] item = QTreeWidgetItem([str(id), str(year), str(month), str(tipster), str(money)]) items.append(item) self.treeMain.addTopLevelItems(items) data = bd.select("conjunta", "year, month") if len(data) < 1: self.lblConjunta.setVisible(False) self.treeConjunta.setVisible(False) else: items = [] for i in data: id = i[0] year = i[3] month = numberToMonth(i[2] + 1) name = i[1] money = i[4] item = QTreeWidgetItem([str(id), str(year), str(month), str(name), str(money)]) items.append(item) self.treeConjunta.addTopLevelItems(items) bd.close()