diff --git a/pyfpdb/Configuration.py b/pyfpdb/Configuration.py index a25b13eb..f1a6830f 100644 --- a/pyfpdb/Configuration.py +++ b/pyfpdb/Configuration.py @@ -415,12 +415,13 @@ class Database: self.db_name = node.getAttribute("db_name") self.db_desc = node.getAttribute("db_desc") self.db_server = node.getAttribute("db_server").lower() - self.db_ip = node.getAttribute("db_ip") + self.db_ip = node.getAttribute("db_ip") + self.db_port = node.getAttribute("db_port") self.db_user = node.getAttribute("db_user") self.db_pass = node.getAttribute("db_pass") self.db_selected = string_to_bool(node.getAttribute("default"), default=False) - log.debug("Database db_name:'%(name)s' db_server:'%(server)s' db_ip:'%(ip)s' db_user:'%(user)s' db_pass (not logged) selected:'%(sel)s'" \ - % { 'name':self.db_name, 'server':self.db_server, 'ip':self.db_ip, 'user':self.db_user, 'sel':self.db_selected} ) + log.debug("Database db_name:'%(name)s' db_server:'%(server)s' db_ip:'%(ip)s' db_port:'%(port)s' db_user:'%(user)s' db_pass (not logged) selected:'%(sel)s'" \ + % { 'name':self.db_name, 'server':self.db_server, 'ip':self.db_ip, 'port':self.db_port, 'user':self.db_user, 'sel':self.db_selected} ) def __str__(self): temp = 'Database = ' + self.db_name + '\n' @@ -1065,6 +1066,9 @@ class Config: try: db['db-host'] = self.supported_databases[name].db_ip except: pass + try: db['db-port'] = self.supported_databases[name].db_port + except KeyError: pass + try: db['db-user'] = self.supported_databases[name].db_user except: pass @@ -1078,15 +1082,16 @@ class Config: return db - def set_db_parameters(self, db_name = 'fpdb', db_ip = None, db_user = None, - db_pass = None, db_desc = None, db_server = None, - default = "False"): + def set_db_parameters(self, db_name = 'fpdb', db_ip = None, db_port = None, + db_user = None, db_pass = None, db_desc = None, + db_server = None, default = "False"): db_node = self.get_db_node(db_name) default = default.lower() defaultb = string_to_bool(default, False) if db_node != None: if db_desc is not None: db_node.setAttribute("db_desc", db_desc) if db_ip is not None: db_node.setAttribute("db_ip", db_ip) + if db_port is not None: db_node.setAttribute("db_port", db_port) if db_user is not None: db_node.setAttribute("db_user", db_user) if db_pass is not None: db_node.setAttribute("db_pass", db_pass) if db_server is not None: db_node.setAttribute("db_server", db_server) @@ -1100,6 +1105,7 @@ class Config: if self.supported_databases.has_key(db_name): if db_desc is not None: self.supported_databases[db_name].dp_desc = db_desc if db_ip is not None: self.supported_databases[db_name].dp_ip = db_ip + if db_port is not None: self.supported_databases[db_name].dp_port = db_port if db_user is not None: self.supported_databases[db_name].dp_user = db_user if db_pass is not None: self.supported_databases[db_name].dp_pass = db_pass if db_server is not None: self.supported_databases[db_name].dp_server = db_server @@ -1154,6 +1160,7 @@ class Config: if self.supported_databases.has_key(db_name): if db_desc is not None: self.supported_databases[db_name].dp_desc = db_desc if db_ip is not None: self.supported_databases[db_name].dp_ip = db_ip + if db_port is not None: self.supported_databases[db_name].dp_port = db_port if db_user is not None: self.supported_databases[db_name].dp_user = db_user if db_pass is not None: self.supported_databases[db_name].dp_pass = db_pass if db_server is not None: self.supported_databases[db_name].dp_server = db_server diff --git a/pyfpdb/Database.py b/pyfpdb/Database.py index a0a0f9c8..dfffc9ce 100644 --- a/pyfpdb/Database.py +++ b/pyfpdb/Database.py @@ -254,6 +254,7 @@ class Database: self.db_server = db_params['db-server'] self.database = db_params['db-databaseName'] self.host = db_params['db-host'] + self.db_port = db_params['db-port'] self.db_path = '' gen = c.get_general_params() self.day_start = 0 @@ -349,6 +350,7 @@ class Database: try: self.connect(backend=db['db-backend'], host=db['db-host'], + port=db['db-port'], database=db['db-databaseName'], user=db['db-user'], password=db['db-password']) @@ -363,14 +365,17 @@ class Database: self.db_server = db_params['db-server'] self.database = db_params['db-databaseName'] self.host = db_params['db-host'] + self.db_port = db_params['db-port'] - def connect(self, backend=None, host=None, database=None, - user=None, password=None, create=False): + def connect(self, backend=None, host=None, port=None, + database=None, user=None, password=None, + create=False): """Connects a database with the given parameters""" if backend is None: raise FpdbError('Database backend not defined') self.backend = backend self.host = host + self.port = port self.user = user self.password = password self.database = database @@ -382,7 +387,8 @@ class Database: if use_pool: MySQLdb = pool.manage(MySQLdb, pool_size=5) try: - self.connection = MySQLdb.connect(host=host, user=user, passwd=password, db=database, use_unicode=True) + self.connection = MySQLdb.connect(host=host, port=port, user=user, + passwd=password, db=database, use_unicode=True) self.__connected = True #TODO: Add port option except MySQLdb.Error, ex: @@ -416,6 +422,7 @@ class Database: if not self.is_connected(): try: self.connection = psycopg2.connect(host = host, + port = port, user = user, password = password, database = database) @@ -1930,99 +1937,100 @@ class Database: #print "DEBUG: %s %s %s" %(hid, pids, pdata) inserts = [] for p in pdata: - line = [0]*89 + #NOTE: Insert new stats at right place because SQL needs strict order + line = [] - line[0] = 1 # HDs - if pdata[p]['street0VPI']: line[1] = 1 - if pdata[p]['street0Aggr']: line[2] = 1 - if pdata[p]['street0_3BChance']: line[3] = 1 - if pdata[p]['street0_3BDone']: line[4] = 1 - if pdata[p]['street0_4BChance']: line[5] = 1 - if pdata[p]['street0_4BDone']: line[6] = 1 - if pdata[p]['street0_FoldTo3BChance']: line[7] = 1 - if pdata[p]['street0_FoldTo3BDone']: line[8] = 1 - if pdata[p]['street0_FoldTo4BChance']: line[9] = 1 - if pdata[p]['street0_FoldTo4BDone']: line[10] = 1 - if pdata[p]['other3BStreet0']: line[11] = 1 - if pdata[p]['other4BStreet0']: line[12] = 1 - if pdata[p]['street1Seen']: line[13] = 1 - if pdata[p]['street2Seen']: line[14] = 1 - if pdata[p]['street3Seen']: line[15] = 1 - if pdata[p]['street4Seen']: line[16] = 1 - if pdata[p]['sawShowdown']: line[17] = 1 - if pdata[p]['street1Aggr']: line[18] = 1 - if pdata[p]['street2Aggr']: line[19] = 1 - if pdata[p]['street3Aggr']: line[20] = 1 - if pdata[p]['street4Aggr']: line[21] = 1 - if pdata[p]['otherRaisedStreet0']: line[22] = 1 - if pdata[p]['otherRaisedStreet1']: line[23] = 1 - if pdata[p]['otherRaisedStreet2']: line[24] = 1 - if pdata[p]['otherRaisedStreet3']: line[25] = 1 - if pdata[p]['otherRaisedStreet4']: line[26] = 1 - if pdata[p]['foldToOtherRaisedStreet0']: line[27] = 1 - if pdata[p]['foldToOtherRaisedStreet1']: line[28] = 1 - if pdata[p]['foldToOtherRaisedStreet2']: line[29] = 1 - if pdata[p]['foldToOtherRaisedStreet3']: line[30] = 1 - if pdata[p]['foldToOtherRaisedStreet4']: line[31] = 1 - line[32] = pdata[p]['wonWhenSeenStreet1'] - line[33] = pdata[p]['wonWhenSeenStreet2'] - line[34] = pdata[p]['wonWhenSeenStreet3'] - line[35] = pdata[p]['wonWhenSeenStreet4'] - line[36] = pdata[p]['wonAtSD'] - if pdata[p]['raiseFirstInChance']: line[37] = 1 - if pdata[p]['raisedFirstIn']: line[38] = 1 - if pdata[p]['foldBbToStealChance']: line[39] = 1 - if pdata[p]['foldedBbToSteal']: line[40] = 1 - if pdata[p]['foldSbToStealChance']: line[41] = 1 - if pdata[p]['foldedSbToSteal']: line[42] = 1 - if pdata[p]['street1CBChance']: line[43] = 1 - if pdata[p]['street1CBDone']: line[44] = 1 - if pdata[p]['street2CBChance']: line[45] = 1 - if pdata[p]['street2CBDone']: line[46] = 1 - if pdata[p]['street3CBChance']: line[47] = 1 - if pdata[p]['street3CBDone']: line[48] = 1 - if pdata[p]['street4CBChance']: line[49] = 1 - if pdata[p]['street4CBDone']: line[50] = 1 - if pdata[p]['foldToStreet1CBChance']: line[51] = 1 - if pdata[p]['foldToStreet1CBDone']: line[52] = 1 - if pdata[p]['foldToStreet2CBChance']: line[53] = 1 - if pdata[p]['foldToStreet2CBDone']: line[54] = 1 - if pdata[p]['foldToStreet3CBChance']: line[55] = 1 - if pdata[p]['foldToStreet3CBDone']: line[56] = 1 - if pdata[p]['foldToStreet4CBChance']: line[57] = 1 - if pdata[p]['foldToStreet4CBDone']: line[58] = 1 - line[59] = pdata[p]['totalProfit'] - if pdata[p]['street1CheckCallRaiseChance']: line[60] = 1 - if pdata[p]['street1CheckCallRaiseDone']: line[61] = 1 - if pdata[p]['street2CheckCallRaiseChance']: line[62] = 1 - if pdata[p]['street2CheckCallRaiseDone']: line[63] = 1 - if pdata[p]['street3CheckCallRaiseChance']: line[64] = 1 - if pdata[p]['street3CheckCallRaiseDone']: line[65] = 1 - if pdata[p]['street4CheckCallRaiseChance']: line[66] = 1 - if pdata[p]['street4CheckCallRaiseDone']: line[67] = 1 - if pdata[p]['street0Calls']: line[68] = 1 - if pdata[p]['street1Calls']: line[69] = 1 - if pdata[p]['street2Calls']: line[70] = 1 - if pdata[p]['street3Calls']: line[71] = 1 - if pdata[p]['street4Calls']: line[72] = 1 - if pdata[p]['street0Bets']: line[73] = 1 - if pdata[p]['street1Bets']: line[74] = 1 - if pdata[p]['street2Bets']: line[75] = 1 - if pdata[p]['street3Bets']: line[76] = 1 - if pdata[p]['street4Bets']: line[77] = 1 - if pdata[p]['street0Raises']: line[78] = 1 - if pdata[p]['street1Raises']: line[79] = 1 - if pdata[p]['street2Raises']: line[80] = 1 - if pdata[p]['street3Raises']: line[81] = 1 - if pdata[p]['street4Raises']: line[82] = 1 + line.append(1) # HDs + line.append(pdata[p]['street0VPI']) + line.append(pdata[p]['street0Aggr']) + line.append(pdata[p]['street0_3BChance']) + line.append(pdata[p]['street0_3BDone']) + line.append(pdata[p]['street0_4BChance']) + line.append(pdata[p]['street0_4BDone']) + line.append(pdata[p]['street0_FoldTo3BChance']) + line.append(pdata[p]['street0_FoldTo3BDone']) + line.append(pdata[p]['street0_FoldTo4BChance']) + line.append(pdata[p]['street0_FoldTo4BDone']) + line.append(pdata[p]['other3BStreet0']) + line.append(pdata[p]['other4BStreet0']) + line.append(pdata[p]['street1Seen']) + line.append(pdata[p]['street2Seen']) + line.append(pdata[p]['street3Seen']) + line.append(pdata[p]['street4Seen']) + line.append(pdata[p]['sawShowdown']) + line.append(pdata[p]['street1Aggr']) + line.append(pdata[p]['street2Aggr']) + line.append(pdata[p]['street3Aggr']) + line.append(pdata[p]['street4Aggr']) + line.append(pdata[p]['otherRaisedStreet0']) + line.append(pdata[p]['otherRaisedStreet1']) + line.append(pdata[p]['otherRaisedStreet2']) + line.append(pdata[p]['otherRaisedStreet3']) + line.append(pdata[p]['otherRaisedStreet4']) + line.append(pdata[p]['foldToOtherRaisedStreet0']) + line.append(pdata[p]['foldToOtherRaisedStreet1']) + line.append(pdata[p]['foldToOtherRaisedStreet2']) + line.append(pdata[p]['foldToOtherRaisedStreet3']) + line.append(pdata[p]['foldToOtherRaisedStreet4']) + line.append(pdata[p]['wonWhenSeenStreet1']) + line.append(pdata[p]['wonWhenSeenStreet2']) + line.append(pdata[p]['wonWhenSeenStreet3']) + line.append(pdata[p]['wonWhenSeenStreet4']) + line.append(pdata[p]['wonAtSD']) + line.append(pdata[p]['raiseFirstInChance']) + line.append(pdata[p]['raisedFirstIn']) + line.append(pdata[p]['foldBbToStealChance']) + line.append(pdata[p]['foldedBbToSteal']) + line.append(pdata[p]['foldSbToStealChance']) + line.append(pdata[p]['foldedSbToSteal']) + line.append(pdata[p]['street1CBChance']) + line.append(pdata[p]['street1CBDone']) + line.append(pdata[p]['street2CBChance']) + line.append(pdata[p]['street2CBDone']) + line.append(pdata[p]['street3CBChance']) + line.append(pdata[p]['street3CBDone']) + line.append(pdata[p]['street4CBChance']) + line.append(pdata[p]['street4CBDone']) + line.append(pdata[p]['foldToStreet1CBChance']) + line.append(pdata[p]['foldToStreet1CBDone']) + line.append(pdata[p]['foldToStreet2CBChance']) + line.append(pdata[p]['foldToStreet2CBDone']) + line.append(pdata[p]['foldToStreet3CBChance']) + line.append(pdata[p]['foldToStreet3CBDone']) + line.append(pdata[p]['foldToStreet4CBChance']) + line.append(pdata[p]['foldToStreet4CBDone']) + line.append(pdata[p]['totalProfit']) + line.append(pdata[p]['street1CheckCallRaiseChance']) + line.append(pdata[p]['street1CheckCallRaiseDone']) + line.append(pdata[p]['street2CheckCallRaiseChance']) + line.append(pdata[p]['street2CheckCallRaiseDone']) + line.append(pdata[p]['street3CheckCallRaiseChance']) + line.append(pdata[p]['street3CheckCallRaiseDone']) + line.append(pdata[p]['street4CheckCallRaiseChance']) + line.append(pdata[p]['street4CheckCallRaiseDone']) + line.append(pdata[p]['street0Calls']) + line.append(pdata[p]['street1Calls']) + line.append(pdata[p]['street2Calls']) + line.append(pdata[p]['street3Calls']) + line.append(pdata[p]['street4Calls']) + line.append(pdata[p]['street0Bets']) + line.append(pdata[p]['street1Bets']) + line.append(pdata[p]['street2Bets']) + line.append(pdata[p]['street3Bets']) + line.append(pdata[p]['street4Bets']) + line.append(pdata[p]['street0Raises']) + line.append(pdata[p]['street1Raises']) + line.append(pdata[p]['street2Raises']) + line.append(pdata[p]['street3Raises']) + line.append(pdata[p]['street4Raises']) - line[83] = gid # gametypeId - line[84] = pids[p] # playerId - line[85] = len(pids) # activeSeats + line.append(gid) # gametypeId + line.append(pids[p]) # playerId + line.append(len(pids)) # activeSeats pos = {'B':'B', 'S':'S', 0:'D', 1:'C', 2:'M', 3:'M', 4:'M', 5:'E', 6:'E', 7:'E', 8:'E', 9:'E' } - line[86] = pos[pdata[p]['position']] - line[87] = pdata[p]['tourneyTypeId'] - line[88] = styleKey # styleKey + line.append(pos[pdata[p]['position']]) + line.append(pdata[p]['tourneyTypeId']) + line.append(styleKey) # styleKey inserts.append(line) diff --git a/pyfpdb/DerivedStats.py b/pyfpdb/DerivedStats.py index 5ab047de..2bb3542f 100644 --- a/pyfpdb/DerivedStats.py +++ b/pyfpdb/DerivedStats.py @@ -446,21 +446,35 @@ class DerivedStats(): for action in hand.actions[hand.actionStreets[1]]: # FIXME: fill other(3|4)BStreet0 - i have no idea what does it mean pname, act, aggr = action[0], action[1], action[1] in ('raises', 'bets') - if aggr and bet_level == 1: - first_agressor = pname - if aggr and bet_level == 2: - self.handsplayers[pname]['street0_3BDone'] = True - second_agressor = pname - self.handsplayers[pname]['street0_4BDone'] = aggr and bet_level == 3 and pname == second_agressor - self.handsplayers[pname]['street0_3BChance'] = self.handsplayers[pname]['street0_3BChance'] or bet_level == 2 - self.handsplayers[pname]['street0_4BChance'] = self.handsplayers[pname]['street0_4BChance'] or bet_level == 3 and pname == first_agressor - self.handsplayers[pname]['street0_FoldTo3BChance'] = self.handsplayers[pname]['street0_FoldTo3BChance'] or (bet_level == 3 and pname == first_agressor) - self.handsplayers[pname]['street0_FoldTo4BChance'] = self.handsplayers[pname]['street0_FoldTo4BChance'] or (bet_level == 4 and pname == second_agressor) - self.handsplayers[pname]['street0_FoldTo3BDone'] = act == 'folds' and bet_level == 3 and pname == first_agressor - self.handsplayers[pname]['street0_FoldTo4BDone'] = act == 'folds' and bet_level == 4 and pname == second_agressor - if aggr: - bet_level += 1 - + if bet_level == 1: + if aggr: + first_agressor = pname + bet_level += 1 + continue + elif bet_level == 2: + self.handsplayers[pname]['street0_3BChance'] = True + if aggr: + self.handsplayers[pname]['street0_3BDone'] = True + second_agressor = pname + bet_level += 1 + continue + elif bet_level == 3: + if pname == first_agressor: + self.handsplayers[pname]['street0_4BChance'] = True + self.handsplayers[pname]['street0_FoldTo3BChance'] = True + if aggr: + self.handsplayers[pname]['street0_4BDone'] = True + bet_level += 1 + elif act == 'folds': + self.handsplayers[pname]['street0_FoldTo3BDone'] = True + break + continue + elif bet_level == 4: + if pname == second_agressor: + self.handsplayers[pname]['street0_FoldTo4BChance'] = True + if act == 'folds': + self.handsplayers[pname]['street0_FoldTo4BDone'] = True + break def calcCBets(self, hand): """Fill streetXCBChance, streetXCBDone, foldToStreetXCBDone, foldToStreetXCBChance diff --git a/pyfpdb/HUD_config.xml.example b/pyfpdb/HUD_config.xml.example index 7bb30e0f..a3df15a2 100644 --- a/pyfpdb/HUD_config.xml.example +++ b/pyfpdb/HUD_config.xml.example @@ -796,6 +796,12 @@ Left-Drag to Move" + diff --git a/pyfpdb/SQL.py b/pyfpdb/SQL.py index 2b432fc6..7acd8729 100644 --- a/pyfpdb/SQL.py +++ b/pyfpdb/SQL.py @@ -1511,10 +1511,14 @@ class Sql: sum(hc.HDs) AS n, sum(hc.street0VPI) AS vpip, sum(hc.street0Aggr) AS pfr, - sum(hc.street0_3BChance) AS TB_opp_0, - sum(hc.street0_3BDone) AS TB_0, - sum(hc.street0_FoldTo3BChance) AS FTB_opp_0, - sum(hc.street0_FoldTo3BDone) AS FTB_0, + sum(hc.street0_3BChance) AS 3B_opp_0, + sum(hc.street0_3BDone) AS 3B_0, + sum(hc.street0_4BChance) AS 4B_opp_0, + sum(hc.street0_4BDone) AS 4B_0, + sum(hc.street0_FoldTo3BChance) AS F3B_opp_0, + sum(hc.street0_FoldTo3BDone) AS F3B_0, + sum(hc.street0_FoldTo4BChance) AS F4B_opp_0, + sum(hc.street0_FoldTo4BDone) AS F4B_0, sum(hc.street1Seen) AS saw_f, sum(hc.street1Seen) AS saw_1, sum(hc.street2Seen) AS saw_2, @@ -1624,10 +1628,14 @@ class Sql: sum(hc.HDs) AS n, sum(hc.street0VPI) AS vpip, sum(hc.street0Aggr) AS pfr, - sum(hc.street0_3BChance) AS TB_opp_0, - sum(hc.street0_3BDone) AS TB_0, - sum(hc.street0_FoldTo3BChance) AS FTB_opp_0, - sum(hc.street0_FoldTo3BDone) AS FTB_0, + sum(hc.street0_3BChance) AS 3B_opp_0, + sum(hc.street0_3BDone) AS 3B_0, + sum(hc.street0_4BChance) AS 4B_opp_0, + sum(hc.street0_4BDone) AS 4B_0, + sum(hc.street0_FoldTo3BChance) AS F3B_opp_0, + sum(hc.street0_FoldTo3BDone) AS F3B_0, + sum(hc.street0_FoldTo4BChance) AS F4B_opp_0, + sum(hc.street0_FoldTo4BDone) AS F4B_0, sum(hc.street1Seen) AS saw_f, sum(hc.street1Seen) AS saw_1, sum(hc.street2Seen) AS saw_2, @@ -1754,10 +1762,14 @@ class Sql: 1 AS n, cast(hp2.street0VPI as integer) AS vpip, cast(hp2.street0Aggr as integer) AS pfr, - cast(hp2.street0_3BChance as integer) AS TB_opp_0, - cast(hp2.street0_3BDone as integer) AS TB_0, - cast(hp2.street0_FoldTo3BChance as integer) AS FTB_opp_0, - cast(hp2.street0_FoldTo3BDone as integer) AS FTB_0, + cast(hp2.street0_3BChance as integer) AS 3B_opp_0, + cast(hp2.street0_3BDone as integer) AS 3B_0, + cast(hp2.street0_4BChance as integer) AS 4B_opp_0, + cast(hp2.street0_4BDone as integer) AS 4B_0, + cast(hp2.street0_FoldTo3BChance as integer) AS F3B_opp_0, + cast(hp2.street0_FoldTo3BDone as integer) AS F3B_0, + cast(hp2.street0_FoldTo4BChance as integer) AS F4B_opp_0, + cast(hp2.street0_FoldTo4BDone as integer) AS F4B_0, cast(hp2.street1Seen as integer) AS saw_f, cast(hp2.street1Seen as integer) AS saw_1, cast(hp2.street2Seen as integer) AS saw_2, @@ -1860,10 +1872,14 @@ class Sql: 1 AS n, cast(hp2.street0VPI as integer) AS vpip, cast(hp2.street0Aggr as integer) AS pfr, - cast(hp2.street0_3BChance as integer) AS TB_opp_0, - cast(hp2.street0_3BDone as integer) AS TB_0, - cast(hp2.street0_FoldTo3BChance as integer) AS FTB_opp_0, - cast(hp2.street0_FoldTo3BDone as integer) AS FTB_0, + cast(hp2.street0_3BChance as integer) AS 3B_opp_0, + cast(hp2.street0_3BDone as integer) AS 3B_0, + cast(hp2.street0_4BChance as integer) AS 4B_opp_0, + cast(hp2.street0_4BDone as integer) AS 4B_0, + cast(hp2.street0_FoldTo3BChance as integer) AS 3TB_opp_0, + cast(hp2.street0_FoldTo3BDone as integer) AS 3TB_0, + cast(hp2.street0_FoldTo4BChance as integer) AS 4TB_opp_0, + cast(hp2.street0_FoldTo4BDone as integer) AS 4TB_0, cast(hp2.street1Seen as integer) AS saw_f, cast(hp2.street1Seen as integer) AS saw_1, cast(hp2.street2Seen as integer) AS saw_2, @@ -1967,10 +1983,14 @@ class Sql: 1 AS n, cast(hp2.street0VPI as integer) AS vpip, cast(hp2.street0Aggr as integer) AS pfr, - cast(hp2.street0_3BChance as integer) AS TB_opp_0, - cast(hp2.street0_3BDone as integer) AS TB_0, - cast(hp2.street0_FoldTo3BChance as integer) AS TB_opp_0, - cast(hp2.street0_FoldTo3BDone as integer) AS TB_0, + cast(hp2.street0_3BChance as integer) AS 3B_opp_0, + cast(hp2.street0_3BDone as integer) AS 3B_0, + cast(hp2.street0_4BChance as integer) AS 4B_opp_0, + cast(hp2.street0_4BDone as integer) AS 4B_0, + cast(hp2.street0_FoldTo3BChance as integer) AS F3B_opp_0, + cast(hp2.street0_FoldTo3BDone as integer) AS F3B_0, + cast(hp2.street0_FoldTo4BChance as integer) AS F4B_opp_0, + cast(hp2.street0_FoldTo4BDone as integer) AS F4B_0, cast(hp2.street1Seen as integer) AS saw_f, cast(hp2.street1Seen as integer) AS saw_1, cast(hp2.street2Seen as integer) AS saw_2, diff --git a/pyfpdb/Stats.py b/pyfpdb/Stats.py index 8d9a4329..a85ac058 100755 --- a/pyfpdb/Stats.py +++ b/pyfpdb/Stats.py @@ -442,31 +442,50 @@ def three_B(stat_dict, player): """ Three bet preflop/3rd.""" stat = 0.0 try: - stat = float(stat_dict[player]['tb_0'])/float(stat_dict[player]['tb_opp_0']) + stat = float(stat_dict[player]['3b_0'])/float(stat_dict[player]['3b_opp_0']) return (stat, '%3.1f' % (100.0*stat), '3B=%3.1f%%' % (100.0*stat), '3B_pf=%3.1f%%' % (100.0*stat), - '(%d/%d)' % (stat_dict[player]['tb_0'], stat_dict[player]['tb_opp_0']), - _('% 3/4 Bet preflop/3rd')) + '(%d/%d)' % (stat_dict[player]['3b_0'], stat_dict[player]['3b_opp_0']), + _('% 4 Bet preflop/3rd')) except: return (stat, 'NA', '3B=NA', '3B_pf=NA', '(0/0)', - _('% 3/4 Bet preflop/3rd')) + _('% 3 Bet preflop/3rd')) + +def four_B(stat_dict, player): + """ Four bet preflop/4rd.""" + stat = 0.0 + try: + stat = float(stat_dict[player]['4b_0'])/float(stat_dict[player]['4b_opp_0']) + return (stat, + '%3.1f' % (100.0*stat), + '4B=%3.1f%%' % (100.0*stat), + '4B_pf=%3.1f%%' % (100.0*stat), + '(%d/%d)' % (stat_dict[player]['4b_0'], stat_dict[player]['4b_opp_0']), + _('% 4 Bet preflop/4rd')) + except: + return (stat, + 'NA', + '4B=NA', + '4B_pf=NA', + '(0/0)', + _('% 4 Bet preflop/4rd')) def f_3bet(stat_dict, player): """ Fold to 3bet preflop. """ stat = 0.0 try: - stat = float(stat_dict[player]['ftb_0'])/float(stat_dict[player]['ftb_opp_0']) + stat = float(stat_dict[player]['f3b_0'])/float(stat_dict[player]['f3b_opp_0']) return (stat, '%3.1f' % (100.0*stat), 'F3B=%3.1f%%' % (100.0*stat), 'F3B_pf=%3.1f%%' % (100.0*stat), - '(%d/%d)' % (stat_dict[player]['ftb_0'], stat_dict[player]['ftb_opp_0']), + '(%d/%d)' % (stat_dict[player]['f3b_0'], stat_dict[player]['f3b_opp_0']), _('% Fold to 3 Bet preflop')) except: return (stat, @@ -480,12 +499,12 @@ def f_4bet(stat_dict, player): """ Fold to 4bet preflop. """ stat = 0.0 try: - stat = float(stat_dict[player]['ffb_0'])/float(stat_dict[player]['ffb_opp_0']) + stat = float(stat_dict[player]['f4b_0'])/float(stat_dict[player]['f4b_opp_0']) return (stat, '%3.1f' % (100.0*stat), 'F4B=%3.1f%%' % (100.0*stat), 'F4B_pf=%3.1f%%' % (100.0*stat), - '(%d/%d)' % (stat_dict[player]['ffb_0'], stat_dict[player]['ffb_opp_0']), + '(%d/%d)' % (stat_dict[player]['f4b_0'], stat_dict[player]['f4b_opp_0']), _('% Fold to 4 Bet preflop')) except: return (stat, diff --git a/pyfpdb/WinamaxToFpdb.py b/pyfpdb/WinamaxToFpdb.py index 2baf3558..b8b5ed1e 100644 --- a/pyfpdb/WinamaxToFpdb.py +++ b/pyfpdb/WinamaxToFpdb.py @@ -107,6 +107,7 @@ class Winamax(HandHistoryConverter): re_TailSplitHands = re.compile(r'\n\s*\n') re_Button = re.compile(r'Seat\s#(?P