git15 - fixed bug that it read sawShowdown wrong. fixed postflop fold importing. fairly certain importer is running correctly now :)
also added SD/F, the percentage of the time the user saw the showdown when they saw the flop. I believe this is normally called WtSD, but this is clearer. widened main GUI a bit more the todolist is still growing hehe
This commit is contained in:
parent
39f5b9095c
commit
490af1acaf
|
@ -2,26 +2,27 @@ todolist (db=database, imp=importer, tv=tableviewer)
|
||||||
|
|
||||||
before alpha
|
before alpha
|
||||||
============
|
============
|
||||||
verify at least two PrintPlayerFlags (one of them with 10+ hands)
|
verify PrintPlayerFlags for one player on at least 10 hands
|
||||||
fix fold % in tv
|
|
||||||
optionally show single postflop agg/fold rate
|
|
||||||
|
|
||||||
colour in tv, or at least seperation lines
|
|
||||||
add stud functionality back to imp/tv
|
|
||||||
db+imp+tv WtSD (went to showdown)
|
|
||||||
db+imp+tv W$SD (won $ when seeing showdown - partial win counts partially here)
|
|
||||||
db+imp+tv WwSF (Won when seen flop - partial taken into account)
|
|
||||||
change action_no to be total for this street rather than just for one player
|
|
||||||
|
|
||||||
properly read 3B/4B percentage
|
|
||||||
fix tv browse button size
|
fix tv browse button size
|
||||||
|
optionally show single postflop agg/fold rate
|
||||||
|
seperation lines for tv
|
||||||
|
fix default pathes up to sensible ones
|
||||||
catch index error, type error, file not found error
|
catch index error, type error, file not found error
|
||||||
update install instructions, include how to adapt default config and where to put it
|
update install instructions, include how to adapt default config and where to put it
|
||||||
split python requirements, get deep links for windows DL for everything
|
split python requirements, get deep links for windows DL for everything
|
||||||
|
license info
|
||||||
|
|
||||||
|
db+imp+tv W$SD (won $ when seeing showdown - partial win counts partially here)
|
||||||
|
db+imp+tv WwSF (Won when seen flop - partial taken into account)
|
||||||
|
change action_no to be total for this street rather than just for one player. change .expected.txt files accordingly.
|
||||||
|
calculate 3B/4B percentage (depends on above, currently its useless)
|
||||||
|
auto-import
|
||||||
implement error file in importer
|
implement error file in importer
|
||||||
|
|
||||||
before beta
|
before beta
|
||||||
===========
|
===========
|
||||||
|
change to use different colours according to classification.
|
||||||
|
add stud, razz and tourney back to imp/tv but with less seperate codepathes
|
||||||
in tv, select from hud table using named fields rather than the current *
|
in tv, select from hud table using named fields rather than the current *
|
||||||
remove remains of mysql/myisam support.
|
remove remains of mysql/myisam support.
|
||||||
tourney bug: sometimes truncuates position on store -> possibly indicates much bigger problem
|
tourney bug: sometimes truncuates position on store -> possibly indicates much bigger problem
|
||||||
|
@ -37,21 +38,21 @@ change save_to_db into one method and probably move into parse_logic
|
||||||
Any comment or print with "todo" in it in the sourcecode except what is marked todo in the menu
|
Any comment or print with "todo" in it in the sourcecode except what is marked todo in the menu
|
||||||
make a quick benchmark of mysql and postgresql: import of my whole db, some tableviewer refreshes with and without updated file
|
make a quick benchmark of mysql and postgresql: import of my whole db, some tableviewer refreshes with and without updated file
|
||||||
db+imp+tv steal blind from btn, co, lmp. fold SB/BB/BI to steal
|
db+imp+tv steal blind from btn, co, lmp. fold SB/BB/BI to steal
|
||||||
|
db+imp+tv cb/2nd/3rd barrel, fold to them.
|
||||||
Make tab and enter work as sensible in GUIs and implement Ctrl+Q, Ctrl+X and Alt+F4 for close.
|
Make tab and enter work as sensible in GUIs and implement Ctrl+Q, Ctrl+X and Alt+F4 for close.
|
||||||
use profile file for bulk import and table viewer settings and pathes
|
use profile file for bulk import and table viewer settings and pathes
|
||||||
handle errors properly, in particular wrt to SQL rollback.
|
handle errors properly, in particular wrt to SQL rollback.
|
||||||
check that we read sitout correctly in: Full Tilt Poker Game #6150325318: Table Bogside
|
check that we read sitout correctly in: Full Tilt Poker Game #6150325318: Table Bogside
|
||||||
setup database, database-user and permission from GUI.
|
setup database, database-user and permission from GUI.
|
||||||
update prepare-git to check for license header and copyright.
|
update prepare-git to check for license header and copyright.
|
||||||
change/expand print_hand to cover everything new and update verified hands' .found file
|
|
||||||
verify at least 2 or 3 sng hands
|
verify at least 2 or 3 sng hands
|
||||||
|
|
||||||
no rush but before 1.0RC
|
no rush but before 1.0RC
|
||||||
========================
|
========================
|
||||||
move version into seperate file
|
move version into seperate file
|
||||||
|
make option to use "traditional" labels, e.g. WtSD instead of SD/F
|
||||||
HTMLify docs and validate them
|
HTMLify docs and validate them
|
||||||
cut down action_types array size to appropriate length
|
cut down action_types array size to appropriate length
|
||||||
make tv work with ftp e.g. by making importer return site as well (easy)
|
|
||||||
make the gui display errors
|
make the gui display errors
|
||||||
log file
|
log file
|
||||||
move directory import code from gui to backend
|
move directory import code from gui to backend
|
||||||
|
@ -61,24 +62,23 @@ Doesn't handle Daylight Saving Time (I don't think at least)
|
||||||
Need to store if someone goes all-in, particularly for better NL/PL support.
|
Need to store if someone goes all-in, particularly for better NL/PL support.
|
||||||
verify at least 3 hands per category per site per limit_type (when cap then do 2 normal and one 1 capped) incl tv display
|
verify at least 3 hands per category per site per limit_type (when cap then do 2 normal and one 1 capped) incl tv display
|
||||||
put lines in tv to make it easier to read
|
put lines in tv to make it easier to read
|
||||||
speed up so that refresh after importing my whole DB takes no more than 10 seks on my P3M-800 (a quick run on git5+ indicates this is ok now), or 5 with remote DB
|
ensure that refresh still takes no more than 10 seks on my P3M-800 (a quick run on git15 indicates this is ok now), or 5 with remote DB
|
||||||
select range of stakes and sng/mtt values and types for tv
|
select range of stakes and sng/mtt values and types for tv
|
||||||
change "for i" to more sensible var name instead of i
|
change "for i" to more sensible var name instead of i
|
||||||
in all importer: stop doing if site=="ftp", make class constants for site_id instead
|
|
||||||
recognise somewhere if a file is still active and if so keep it open and only read new hands rather than detecting dupes
|
recognise somewhere if a file is still active and if so keep it open and only read new hands rather than detecting dupes
|
||||||
gentoo ebuild
|
gentoo ebuild
|
||||||
separate all gui and all processing into files that are named accordingly
|
separate all gui and all processing into files that are named accordingly
|
||||||
ensure that there is only one db handle flying around and that its state is handled properly, ie. by the GUI. i think that might be why we have to reconnect the DB in tableviewer.
|
ensure that there is only one db handle flying around and that its state is handled properly, ie. by the GUI. i think that might be why we have to reconnect the DB in tableviewer.
|
||||||
why do we have to reconnect in tv.read_names_clicked?
|
why do we have to reconnect in tv.read_names_clicked?
|
||||||
HUD for PokerStars
|
|
||||||
HTMLify docs
|
|
||||||
|
|
||||||
can wait till 1.x
|
can wait till 1.x
|
||||||
=================
|
=================
|
||||||
|
positional stats in HUD
|
||||||
|
return full ftp functionality
|
||||||
|
in all importer: stop doing if site=="ftp", make class constants for site_id instead
|
||||||
finish cleaning tabledesign html code
|
finish cleaning tabledesign html code
|
||||||
rearrange huddata fields
|
rearrange huddata fields
|
||||||
It treats fold due to disconnect as voluntary fold which is not ideal
|
It treats fold due to disconnect as voluntary fold which is not ideal
|
||||||
auto-import
|
|
||||||
check for unnecessary db.commit()
|
check for unnecessary db.commit()
|
||||||
aliases
|
aliases
|
||||||
Probably PartyPoker for all or most supported games
|
Probably PartyPoker for all or most supported games
|
||||||
|
|
|
@ -18,16 +18,16 @@ Fpdb fully supports NL/PL, however currently only as far as it does limit games.
|
||||||
|
|
||||||
Tournaments/SnGs
|
Tournaments/SnGs
|
||||||
================
|
================
|
||||||
Broken - used to work, hardly tested. Needs to be updated to new infrastructure.. Not sure when I'll fix this, volunteers welcome :)
|
Broken - used to work, hardly tested. Needs to be updated to new infrastructure.. Will probably fix this quite soon.
|
||||||
Independent of the current broken state at the moment tourney support would only show information as if a tourney is a ring game - but it's not. If you play tournaments and would like to help improving this let me know, I probably won't bother.
|
Independent of the current brokenness the tourney support would only show information as if a tourney is a ring game - but it's not. If you play tournaments and would like to help improving this let me know, I probably won't bother.
|
||||||
|
|
||||||
Full Tilt Poker
|
Full Tilt Poker
|
||||||
===============
|
===============
|
||||||
Not sure - it should import them, but I believe the table viewer won't work. Should only take minutes to fix this so I'll probably do it soon.
|
Not sure - it should import them, but I believe the table viewer won't work. Would be easy to fix though, volunteers welcome
|
||||||
|
|
||||||
Other Sites
|
Other Sites
|
||||||
===========
|
===========
|
||||||
Patches/Volunteers welcome.
|
Patches/Volunteers welcome. Should be quite easy.
|
||||||
|
|
||||||
GUI
|
GUI
|
||||||
===
|
===
|
||||||
|
|
|
@ -343,9 +343,9 @@ blabla""")
|
||||||
self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
|
self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
|
||||||
self.window.connect("delete_event", self.delete_event)
|
self.window.connect("delete_event", self.delete_event)
|
||||||
self.window.connect("destroy", self.destroy)
|
self.window.connect("destroy", self.destroy)
|
||||||
self.window.set_title("Free Poker DB - version: pre-alpha, git14")
|
self.window.set_title("Free Poker DB - version: pre-alpha, git15")
|
||||||
self.window.set_border_width(1)
|
self.window.set_border_width(1)
|
||||||
self.window.set_size_request(700,400)
|
self.window.set_size_request(750,400)
|
||||||
self.window.set_resizable(True)
|
self.window.set_resizable(True)
|
||||||
|
|
||||||
self.menu_items = (
|
self.menu_items = (
|
||||||
|
|
|
@ -1230,21 +1230,21 @@ def calculateHudImport(player_ids, category, action_types):
|
||||||
#set default values
|
#set default values
|
||||||
myVPIP=False
|
myVPIP=False
|
||||||
myPFR=False
|
myPFR=False
|
||||||
myPF3B4BChance=False #todo
|
myPF3B4BChance=False
|
||||||
myPF3B4B=False
|
myPF3B4B=False
|
||||||
mySawFlop=False #todo
|
mySawFlop=False
|
||||||
mySawTurn=False #todo
|
mySawTurn=False
|
||||||
mySawRiver=False #todo
|
mySawRiver=False
|
||||||
mySawShowdown=False #todo
|
mySawShowdown=False
|
||||||
myRaisedFlop=False #todo
|
myRaisedFlop=False
|
||||||
myRaisedTurn=False #todo
|
myRaisedTurn=False
|
||||||
myRaisedRiver=False #todo
|
myRaisedRiver=False
|
||||||
myOtherRaisedFlop=False #todo
|
myOtherRaisedFlop=False
|
||||||
myOtherRaisedFlopFold=False #todo
|
myOtherRaisedFlopFold=False
|
||||||
myOtherRaisedTurn=False #todo
|
myOtherRaisedTurn=False
|
||||||
myOtherRaisedTurnFold=False #todo
|
myOtherRaisedTurnFold=False
|
||||||
myOtherRaisedRiver=False #todo
|
myOtherRaisedRiver=False
|
||||||
myOtherRaisedRiverFold=False #todo
|
myOtherRaisedRiverFold=False
|
||||||
|
|
||||||
#calculate preflop values
|
#calculate preflop values
|
||||||
street=0
|
street=0
|
||||||
|
@ -1257,7 +1257,7 @@ def calculateHudImport(player_ids, category, action_types):
|
||||||
myVPIP=True
|
myVPIP=True
|
||||||
if heroPfRaiseCount>=1:
|
if heroPfRaiseCount>=1:
|
||||||
myPFR=True
|
myPFR=True
|
||||||
if heroPfRaiseCount>=2:#todo: this doesnt catch all 3B4B
|
if heroPfRaiseCount>=2:
|
||||||
myPF3B4B=True
|
myPF3B4B=True
|
||||||
|
|
||||||
#calculate saw* values
|
#calculate saw* values
|
||||||
|
@ -1267,9 +1267,10 @@ def calculateHudImport(player_ids, category, action_types):
|
||||||
mySawTurn=True
|
mySawTurn=True
|
||||||
if (len(action_types[3][player])>0):
|
if (len(action_types[3][player])>0):
|
||||||
mySawRiver=True
|
mySawRiver=True
|
||||||
|
mySawShowdown=True
|
||||||
for count in range (len(action_types[3][player])):
|
for count in range (len(action_types[3][player])):
|
||||||
if action_types[3][player][count]=="fold":
|
if action_types[3][player][count]=="fold":
|
||||||
mySawShowdown=True
|
mySawShowdown=False
|
||||||
|
|
||||||
#flop stuff
|
#flop stuff
|
||||||
street=1
|
street=1
|
||||||
|
@ -1285,21 +1286,46 @@ def calculateHudImport(player_ids, category, action_types):
|
||||||
for countOther in range (len(action_types[street][otherPlayer])):
|
for countOther in range (len(action_types[street][otherPlayer])):
|
||||||
if action_types[street][otherPlayer][countOther]=="bet":
|
if action_types[street][otherPlayer][countOther]=="bet":
|
||||||
myOtherRaisedFlop=True
|
myOtherRaisedFlop=True
|
||||||
for countOtherFold in range (len(action_types[street][otherPlayer])):
|
for countOtherFold in range (len(action_types[street][player])):
|
||||||
if action_types[street][otherPlayer][countOtherFold]=="fold":
|
if action_types[street][player][countOtherFold]=="fold":
|
||||||
myOtherRaisedFlopFold=True
|
myOtherRaisedFlopFold=True
|
||||||
|
|
||||||
#turn stuff: todo
|
#turn stuff - copy of flop with different vars
|
||||||
for count in range(len(action_types[2][player])):
|
street=2
|
||||||
if action_types[2][player][count]=="bet":
|
if mySawTurn:
|
||||||
myRaisedTurn=True
|
for count in range(len(action_types[street][player])):
|
||||||
|
if action_types[street][player][count]=="bet":
|
||||||
|
myRaisedTurn=True
|
||||||
|
|
||||||
|
for otherPlayer in range (len(player_ids)):
|
||||||
|
if player==otherPlayer or myOtherRaisedTurn:
|
||||||
|
pass
|
||||||
|
else:
|
||||||
|
for countOther in range (len(action_types[street][otherPlayer])):
|
||||||
|
if action_types[street][otherPlayer][countOther]=="bet":
|
||||||
|
myOtherRaisedTurn=True
|
||||||
|
for countOtherFold in range (len(action_types[street][player])):
|
||||||
|
if action_types[street][player][countOtherFold]=="fold":
|
||||||
|
myOtherRaisedTurnFold=True
|
||||||
|
|
||||||
#river stuff: todo
|
#turn stuff - copy of flop with different vars
|
||||||
for count in range(len(action_types[3][player])):
|
street=3
|
||||||
if action_types[3][player][count]=="bet":
|
if mySawRiver:
|
||||||
myRaisedRiver=True
|
for count in range(len(action_types[street][player])):
|
||||||
|
if action_types[street][player][count]=="bet":
|
||||||
|
myRaisedRiver=True
|
||||||
|
|
||||||
|
for otherPlayer in range (len(player_ids)):
|
||||||
|
if player==otherPlayer or myOtherRaisedRiver:
|
||||||
|
pass
|
||||||
|
else:
|
||||||
|
for countOther in range (len(action_types[street][otherPlayer])):
|
||||||
|
if action_types[street][otherPlayer][countOther]=="bet":
|
||||||
|
myOtherRaisedRiver=True
|
||||||
|
for countOtherFold in range (len(action_types[street][player])):
|
||||||
|
if action_types[street][player][countOtherFold]=="fold":
|
||||||
|
myOtherRaisedRiverFold=True
|
||||||
|
|
||||||
|
|
||||||
#add each value to the appropriate array
|
#add each value to the appropriate array
|
||||||
VPIP.append(myVPIP)
|
VPIP.append(myVPIP)
|
||||||
PFR.append(myPFR)
|
PFR.append(myPFR)
|
||||||
|
|
|
@ -30,7 +30,6 @@ class table_viewer (threading.Thread):
|
||||||
return "n/a"
|
return "n/a"
|
||||||
else:
|
else:
|
||||||
return str(int((a/float(b))*100))+"%"
|
return str(int((a/float(b))*100))+"%"
|
||||||
return "todo"
|
|
||||||
#end def hudDivide
|
#end def hudDivide
|
||||||
|
|
||||||
def browse_clicked(self, widget, data):
|
def browse_clicked(self, widget, data):
|
||||||
|
@ -60,10 +59,10 @@ class table_viewer (threading.Thread):
|
||||||
arr=[]
|
arr=[]
|
||||||
#first prepare the header row
|
#first prepare the header row
|
||||||
if (self.category=="holdem" or self.category=="omahahi" or self.category=="omahahilo"):
|
if (self.category=="holdem" or self.category=="omahahi" or self.category=="omahahilo"):
|
||||||
tmp=("Name", "Hands", "VPIP", "PFR", "PF3B4B", "AF", "FF", "AT", "FT", "AR", "FR")
|
tmp=("Name", "Hands", "VPIP", "PFR", "PF3B4B", "AF", "FF", "AT", "FT", "AR", "FR", "SD/F")
|
||||||
else:
|
else:
|
||||||
raise fpdb_simple.FpdbError("todo reimplement stud")
|
raise fpdb_simple.FpdbError("reimplement stud")
|
||||||
tmp=("Name", "Hands", "VPI3", "A3", "3B4B_3" "A4", "F4", "A5", "F5", "A6", "F6", "A7", "F7")
|
tmp=("Name", "Hands", "VPI3", "A3", "3B4B_3" "A4", "F4", "A5", "F5", "A6", "F6", "A7", "F7", "SD/4")
|
||||||
arr.append(tmp)
|
arr.append(tmp)
|
||||||
|
|
||||||
#then the data rows
|
#then the data rows
|
||||||
|
@ -112,6 +111,7 @@ class table_viewer (threading.Thread):
|
||||||
tmp.append(self.hudDivide(row[19],row[18])+" ("+str(row[18])+")") #FT
|
tmp.append(self.hudDivide(row[19],row[18])+" ("+str(row[18])+")") #FT
|
||||||
tmp.append(self.hudDivide(row[15],row[11])+" ("+str(row[11])+")") #AR
|
tmp.append(self.hudDivide(row[15],row[11])+" ("+str(row[11])+")") #AR
|
||||||
tmp.append(self.hudDivide(row[21],row[20])+" ("+str(row[20])+")") #FR
|
tmp.append(self.hudDivide(row[21],row[20])+" ("+str(row[20])+")") #FR
|
||||||
|
tmp.append(self.hudDivide(row[12],row[9])+" ("+str(row[9])+")") #SD/F
|
||||||
|
|
||||||
arr.append(tmp)
|
arr.append(tmp)
|
||||||
return arr
|
return arr
|
||||||
|
|
Loading…
Reference in New Issue
Block a user