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:
steffen123 2008-08-07 11:08:50 +01:00
parent 39f5b9095c
commit 490af1acaf
5 changed files with 82 additions and 56 deletions

View File

@ -2,26 +2,27 @@ todolist (db=database, imp=importer, tv=tableviewer)
before alpha
============
verify at least two PrintPlayerFlags (one of them with 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
verify PrintPlayerFlags for one player on at least 10 hands
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
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
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
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 *
remove remains of mysql/myisam support.
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
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 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.
use profile file for bulk import and table viewer settings and pathes
handle errors properly, in particular wrt to SQL rollback.
check that we read sitout correctly in: Full Tilt Poker Game #6150325318: Table Bogside
setup database, database-user and permission from GUI.
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
no rush but before 1.0RC
========================
move version into seperate file
make option to use "traditional" labels, e.g. WtSD instead of SD/F
HTMLify docs and validate them
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
log file
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.
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
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
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
gentoo ebuild
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.
why do we have to reconnect in tv.read_names_clicked?
HUD for PokerStars
HTMLify docs
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
rearrange huddata fields
It treats fold due to disconnect as voluntary fold which is not ideal
auto-import
check for unnecessary db.commit()
aliases
Probably PartyPoker for all or most supported games

View File

@ -18,16 +18,16 @@ Fpdb fully supports NL/PL, however currently only as far as it does limit games.
Tournaments/SnGs
================
Broken - used to work, hardly tested. Needs to be updated to new infrastructure.. Not sure when I'll fix this, volunteers welcome :)
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.
Broken - used to work, hardly tested. Needs to be updated to new infrastructure.. Will probably fix this quite soon.
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
===============
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
===========
Patches/Volunteers welcome.
Patches/Volunteers welcome. Should be quite easy.
GUI
===

View File

@ -343,9 +343,9 @@ blabla""")
self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
self.window.connect("delete_event", self.delete_event)
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_size_request(700,400)
self.window.set_size_request(750,400)
self.window.set_resizable(True)
self.menu_items = (

View File

@ -1230,21 +1230,21 @@ def calculateHudImport(player_ids, category, action_types):
#set default values
myVPIP=False
myPFR=False
myPF3B4BChance=False #todo
myPF3B4BChance=False
myPF3B4B=False
mySawFlop=False #todo
mySawTurn=False #todo
mySawRiver=False #todo
mySawShowdown=False #todo
myRaisedFlop=False #todo
myRaisedTurn=False #todo
myRaisedRiver=False #todo
myOtherRaisedFlop=False #todo
myOtherRaisedFlopFold=False #todo
myOtherRaisedTurn=False #todo
myOtherRaisedTurnFold=False #todo
myOtherRaisedRiver=False #todo
myOtherRaisedRiverFold=False #todo
mySawFlop=False
mySawTurn=False
mySawRiver=False
mySawShowdown=False
myRaisedFlop=False
myRaisedTurn=False
myRaisedRiver=False
myOtherRaisedFlop=False
myOtherRaisedFlopFold=False
myOtherRaisedTurn=False
myOtherRaisedTurnFold=False
myOtherRaisedRiver=False
myOtherRaisedRiverFold=False
#calculate preflop values
street=0
@ -1257,7 +1257,7 @@ def calculateHudImport(player_ids, category, action_types):
myVPIP=True
if heroPfRaiseCount>=1:
myPFR=True
if heroPfRaiseCount>=2:#todo: this doesnt catch all 3B4B
if heroPfRaiseCount>=2:
myPF3B4B=True
#calculate saw* values
@ -1267,9 +1267,10 @@ def calculateHudImport(player_ids, category, action_types):
mySawTurn=True
if (len(action_types[3][player])>0):
mySawRiver=True
mySawShowdown=True
for count in range (len(action_types[3][player])):
if action_types[3][player][count]=="fold":
mySawShowdown=True
mySawShowdown=False
#flop stuff
street=1
@ -1285,20 +1286,45 @@ def calculateHudImport(player_ids, category, action_types):
for countOther in range (len(action_types[street][otherPlayer])):
if action_types[street][otherPlayer][countOther]=="bet":
myOtherRaisedFlop=True
for countOtherFold in range (len(action_types[street][otherPlayer])):
if action_types[street][otherPlayer][countOtherFold]=="fold":
for countOtherFold in range (len(action_types[street][player])):
if action_types[street][player][countOtherFold]=="fold":
myOtherRaisedFlopFold=True
#turn stuff: todo
for count in range(len(action_types[2][player])):
if action_types[2][player][count]=="bet":
#turn stuff - copy of flop with different vars
street=2
if mySawTurn:
for count in range(len(action_types[street][player])):
if action_types[street][player][count]=="bet":
myRaisedTurn=True
#river stuff: todo
for count in range(len(action_types[3][player])):
if action_types[3][player][count]=="bet":
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
#turn stuff - copy of flop with different vars
street=3
if mySawRiver:
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
VPIP.append(myVPIP)

View File

@ -30,7 +30,6 @@ class table_viewer (threading.Thread):
return "n/a"
else:
return str(int((a/float(b))*100))+"%"
return "todo"
#end def hudDivide
def browse_clicked(self, widget, data):
@ -60,10 +59,10 @@ class table_viewer (threading.Thread):
arr=[]
#first prepare the header row
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:
raise fpdb_simple.FpdbError("todo reimplement stud")
tmp=("Name", "Hands", "VPI3", "A3", "3B4B_3" "A4", "F4", "A5", "F5", "A6", "F6", "A7", "F7")
raise fpdb_simple.FpdbError("reimplement stud")
tmp=("Name", "Hands", "VPI3", "A3", "3B4B_3" "A4", "F4", "A5", "F5", "A6", "F6", "A7", "F7", "SD/4")
arr.append(tmp)
#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[15],row[11])+" ("+str(row[11])+")") #AR
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)
return arr