From 18ff57027f1502166b4a3cd3a67470fb3e16963e Mon Sep 17 00:00:00 2001 From: steffen123 Date: Sun, 17 Aug 2008 03:18:42 +0100 Subject: [PATCH] p44 - implement hands.tableName/importTime --- docs/known-bugs-and-planned-features.txt | 2 +- pyfpdb/fpdb.py | 2 +- pyfpdb/fpdb_db.py | 4 ++-- pyfpdb/fpdb_parse_logic.py | 8 ++++++-- pyfpdb/fpdb_save_to_db.py | 4 ++-- pyfpdb/fpdb_simple.py | 25 +++++++++++++++++------- 6 files changed, 30 insertions(+), 15 deletions(-) diff --git a/docs/known-bugs-and-planned-features.txt b/docs/known-bugs-and-planned-features.txt index df8a9fce..76b74c78 100644 --- a/docs/known-bugs-and-planned-features.txt +++ b/docs/known-bugs-and-planned-features.txt @@ -3,7 +3,7 @@ Everything is subject to change and especially the order will often change. Patc alpha2 (release by 17Aug) ====== -implement hands.tableName/importTime HandsPlayers.seatNo + HandsPlayers.seatNo change tabledesign VALIGN seperate and improve instructions for update diff --git a/pyfpdb/fpdb.py b/pyfpdb/fpdb.py index ec3a4405..9eb0eed8 100755 --- a/pyfpdb/fpdb.py +++ b/pyfpdb/fpdb.py @@ -370,7 +370,7 @@ This program is licensed under the AGPL3, see docs"""+os.sep+"agpl-3.0.txt") 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: alpha1+, p43") + self.window.set_title("Free Poker DB - version: alpha1+, p44") self.window.set_border_width(1) self.window.set_size_request(1020,400) self.window.set_resizable(True) diff --git a/pyfpdb/fpdb_db.py b/pyfpdb/fpdb_db.py index 4be539e5..bef32616 100644 --- a/pyfpdb/fpdb_db.py +++ b/pyfpdb/fpdb_db.py @@ -47,7 +47,7 @@ class fpdb_db: try: self.cursor.execute("SELECT * FROM Settings") settings=self.cursor.fetchone() - if settings[0]!=43: + if settings[0]!=44: print "outdated or too new database version - please recreate tables" except:# _mysql_exceptions.ProgrammingError: print "failed to read settings table - please recreate tables" @@ -337,7 +337,7 @@ class fpdb_db: riverCheckCallRaiseChance INT, riverCheckCallRaiseDone INT)""") - self.cursor.execute("INSERT INTO Settings VALUES (43);") + self.cursor.execute("INSERT INTO Settings VALUES (44);") self.cursor.execute("INSERT INTO Sites VALUES (DEFAULT, \"Full Tilt Poker\", 'USD');") self.cursor.execute("INSERT INTO Sites VALUES (DEFAULT, \"PokerStars\", 'USD');") self.cursor.execute("INSERT INTO TourneysGametypes (id) VALUES (DEFAULT);") diff --git a/pyfpdb/fpdb_parse_logic.py b/pyfpdb/fpdb_parse_logic.py index d69eeae0..ee98ac4a 100644 --- a/pyfpdb/fpdb_parse_logic.py +++ b/pyfpdb/fpdb_parse_logic.py @@ -83,6 +83,10 @@ def mainParser(db, cursor, site, category, hand): pass elif (lineTypes[i]=="ante"): fpdb_simple.parseAnteLine(hand[i], site, names, antes) + elif (lineTypes[i]=="table"): + result=fpdb_simple.parseTableLine(hand[i]) + maxSeats=result['maxSeats'] + tableName=result['tableName'] else: raise fpdb_simple.FpdbError("unrecognised lineType:"+lineTypes[i]) @@ -114,7 +118,7 @@ def mainParser(db, cursor, site, category, hand): prizepool=-1 if (category=="holdem" or category=="omahahi" or category=="omahahilo"): result = fpdb_save_to_db.tourney_holdem_omaha(cursor, category, siteTourneyNo, buyin, fee, knockout, entries, prizepool, tourneyStartTime, payin_amounts, ranks, - siteHandNo, gametypeID, handStartTime, names, playerIDs, startCashes, positions, cardValues, cardSuits, boardValues, boardSuits, winnings, rakes, actionTypes, actionAmounts, actionNos, hudImportData) + siteHandNo, gametypeID, handStartTime, names, playerIDs, startCashes, positions, cardValues, cardSuits, boardValues, boardSuits, winnings, rakes, actionTypes, actionAmounts, actionNos, hudImportData, maxSeats, tableName) elif (category=="razz" or category=="studhi" or category=="studhilo"): raise fpdb_simple.FpdbError ("stud/razz are currently broken") result = fpdb_save_to_db.tourney_stud(cursor, category, siteTourneyNo, buyin, fee, @@ -124,7 +128,7 @@ def mainParser(db, cursor, site, category, hand): actionTypes, actionAmounts, hudImportData) else: if (category=="holdem" or category=="omahahi" or category=="omahahilo"): - result = fpdb_save_to_db.ring_holdem_omaha(cursor, category, siteHandNo, gametypeID, handStartTime, names, playerIDs, startCashes, positions, cardValues, cardSuits, boardValues, boardSuits, winnings, rakes, actionTypes, actionAmounts, actionNos, hudImportData) + result = fpdb_save_to_db.ring_holdem_omaha(cursor, category, siteHandNo, gametypeID, handStartTime, names, playerIDs, startCashes, positions, cardValues, cardSuits, boardValues, boardSuits, winnings, rakes, actionTypes, actionAmounts, actionNos, hudImportData, maxSeats, tableName) elif (category=="razz" or category=="studhi" or category=="studhilo"): raise fpdb_simple.FpdbError ("stud/razz are currently broken") result = fpdb_save_to_db.ring_stud(cursor, category, siteHandNo, gametypeID, diff --git a/pyfpdb/fpdb_save_to_db.py b/pyfpdb/fpdb_save_to_db.py index a3c95733..09ff1e66 100644 --- a/pyfpdb/fpdb_save_to_db.py +++ b/pyfpdb/fpdb_save_to_db.py @@ -37,7 +37,7 @@ def ring_stud(cursor, category, site_hand_no, gametype_id, hand_start_time, return site_hand_no #end def ring_stud -def ring_holdem_omaha(cursor, category, site_hand_no, gametype_id, hand_start_time, names, player_ids, start_cashes, positions, card_values, card_suits, board_values, board_suits, winnings, rakes, action_types, action_amounts, actionNos, hudImportData): +def ring_holdem_omaha(cursor, category, site_hand_no, gametype_id, hand_start_time, names, player_ids, start_cashes, positions, card_values, card_suits, board_values, board_suits, winnings, rakes, action_types, action_amounts, actionNos, hudImportData, maxSeats, tableName): """stores a holdem/omaha hand into the database""" #fill up the two player card arrays @@ -50,7 +50,7 @@ def ring_holdem_omaha(cursor, category, site_hand_no, gametype_id, hand_start_ti fpdb_simple.fill_board_cards(board_values, board_suits) - hands_id=fpdb_simple.storeHands(cursor, site_hand_no, gametype_id, hand_start_time, names) + hands_id=fpdb_simple.storeHands(cursor, site_hand_no, gametype_id, hand_start_time, names, tableName) hands_players_ids=fpdb_simple.store_hands_players_holdem_omaha(cursor, category, hands_id, player_ids, start_cashes, positions, card_values, card_suits, winnings, rakes) diff --git a/pyfpdb/fpdb_simple.py b/pyfpdb/fpdb_simple.py index 012d2b90..32592e2d 100644 --- a/pyfpdb/fpdb_simple.py +++ b/pyfpdb/fpdb_simple.py @@ -109,6 +109,8 @@ def classifyLines(hand, category, lineTypes, lineStreets): currentStreet=7 elif (hand[i].find(" shows [")!=-1): lineTypes.append("cards") + elif (hand[i].startswith("Table '")): + lineTypes.append("table") else: raise FpdbError("unrecognised linetype in:"+hand[i]) lineStreets.append(currentStreet) @@ -340,8 +342,8 @@ def filterCrap(site, hand): toRemove.append(hand[i]) elif (hand[i].find(" is low with [")!=-1): toRemove.append(hand[i]) - elif (hand[i].find("-max Seat #")!=-1 and hand[i].find(" is the button")!=-1): - toRemove.append(hand[i]) + #elif (hand[i].find("-max Seat #")!=-1 and hand[i].find(" is the button")!=-1): + # toRemove.append(hand[i]) elif (hand[i].endswith(" mucks")): toRemove.append(hand[i]) elif (hand[i].endswith(": mucks hand")): @@ -860,7 +862,18 @@ def parseSiteHandNo(topline): pos1=topline.find("#")+1 pos2=topline.find(":") return topline[pos1:pos2] -#end def parseHandSiteNo +#end def parseSiteHandNo + +def parseTableLine(line): + """returns a dictionary with maxSeats and tableName""" + pos1=line.find('\'')+1 + pos2=line.find('\'', pos1) + #print "table:",line[pos1:pos2] + pos3=pos2+2 + pos4=line.find("-max") + #print "seats:",line[pos3:pos4] + return {'maxSeats':int(line[pos3:pos4]), 'tableName':line[pos1:pos2]} +#end def parseTableLine #returns the hand no assigned by the poker site def parseTourneyNo(topline): @@ -968,10 +981,8 @@ def recogniseGametypeID(cursor, topline, site_id, category, isTourney):#todo: th len(result) except TypeError: if category=="holdem" or category=="omahahi" or category=="omahahilo": - max_seats=10 base="hold" else: - max_seats=8 base="stud" if category=="holdem" or category=="omahahi" or category=="studhi": @@ -1112,9 +1123,9 @@ def store_board_cards(cursor, hands_id, board_values, board_suits): board_values[4], board_suits[4])) #end def store_board_cards -def storeHands(cursor, site_hand_no, gametype_id, hand_start_time, names): +def storeHands(cursor, site_hand_no, gametype_id, hand_start_time, names, tableName): #stores into table hands - cursor.execute ("INSERT INTO Hands (siteHandNo, gametypeId, handStart, seats) VALUES (%s, %s, %s, %s)", (site_hand_no, gametype_id, hand_start_time, len(names))) + cursor.execute ("INSERT INTO Hands (siteHandNo, gametypeId, handStart, seats, tableName, importTime) VALUES (%s, %s, %s, %s, %s, %s)", (site_hand_no, gametype_id, hand_start_time, len(names), tableName, datetime.datetime.today())) #todo: find a better way of doing this... cursor.execute("SELECT id FROM Hands WHERE siteHandNo=%s AND gametypeId=%s", (site_hand_no, gametype_id)) return cursor.fetchall()[0][0]