Merge branch 'master' of git://git.assembla.com/fpdboz
This commit is contained in:
		
						commit
						fd2cb9dc42
					
				| 
						 | 
					@ -29,8 +29,8 @@ cp -R regression-test fpdb-$1/
 | 
				
			||||||
cp -R utils fpdb-$1/
 | 
					cp -R utils fpdb-$1/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
cd fpdb-$1
 | 
					cd fpdb-$1
 | 
				
			||||||
zip -r ../../fpdb-1.0_$1.zip *
 | 
					zip -r releases/fpdb-1.0_$1.zip *
 | 
				
			||||||
tar -cf - * | bzip2 >> ../../fpdb-1.0_$1.tar.bz2
 | 
					tar -cf - * | bzip2 >> releases/fpdb-1.0_$1.tar.bz2
 | 
				
			||||||
cd ..
 | 
					cd ..
 | 
				
			||||||
rm -r fpdb-$1
 | 
					rm -r fpdb-$1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -312,11 +312,10 @@ The program itself is licensed under AGPLv3, see agpl-3.0.txt</p>
 | 
				
			||||||
</TABLE>
 | 
					</TABLE>
 | 
				
			||||||
<p><BR></P>
 | 
					<p><BR></P>
 | 
				
			||||||
<p><B>Table HandsPlayers</B></P>
 | 
					<p><B>Table HandsPlayers</B></P>
 | 
				
			||||||
<p>cardX: can be 1 through 20, one for each card. In holdem only 1-2 of these are used, in omaha 1-4, in stud/razz 1-7, in single draw games 1-10 is used and in badugi 1-16 (4*4) is used.</P>
 | 
					<p>cardX: can be 1 through 20, one for each card. In holdem only 1-2 of these are used, in omaha 1-4, in stud/razz 1-7, in single draw 1-10, in tripple draw all 20 and in badugi 1-16 (4*4).</P>
 | 
				
			||||||
<p>For the draw games: the first 5 (badugi: 4) cards are the initial cards, the next 5 (badugi: 4) are after the first draw. If a player keeps some cards then those cards' spaces are filled with "k", short for "kept".<br>
 | 
					<p>For the draw games: the first 5 (badugi: 4) cards are the initial cards, the next 5 (badugi: 4) are after the first draw, etc.<br>
 | 
				
			||||||
Example 1: If a player gets 2-6 spades for his first five cards and decides to throw away the 4 and then gets a 7 of spades then the first 10 fields of cardXValue would be as follows: 2, 3, 4, 5, 6, k, k, 7, k, k<br>
 | 
					Example 1: If a player gets 2-6 spades for his first five cards and decides to throw away the 4 and then gets a 7 of spades then the first 10 fields of cardXValue would be as follows: 2, 3, 4, 5, 6, 2, 3, 5, 6, 7<br>
 | 
				
			||||||
Example 2: If a player gets 2, 3, 5, 8, J of spades for his first five cards and decides to throw away the 2 and the 3 and then gets a Q and K of spades then the first 10 fields of cardXValue would be as follows: 2, 3, 5, 8, J, Q, K, k, k, k<br>
 | 
					Example 2: If a player gets 2, 3, 5, 8, J of spades for his first five cards and decides to throw away the 2 and the 3 and then gets a Q and K of spades then the first 10 fields of cardXValue would be as follows: 2, 3, 5, 8, J, 5, 8, J, Q, K.</p>
 | 
				
			||||||
Note that it will k in the space of which card was there previously, so in example 2 where the player kept the last 3 cards, the last 3 fields of the first draw (ie. card8-10Value) are replaced with k.</p>
 | 
					 | 
				
			||||||
<p>I did not separate this into an extra table because I felt the lost space is not sufficiently large. Also the benefit for searching is far less relevant.</P>
 | 
					<p>I did not separate this into an extra table because I felt the lost space is not sufficiently large. Also the benefit for searching is far less relevant.</P>
 | 
				
			||||||
<TABLE BORDER=1 CELLPADDING=2 CELLSPACING=0>
 | 
					<TABLE BORDER=1 CELLPADDING=2 CELLSPACING=0>
 | 
				
			||||||
	<TR VALIGN=TOP>
 | 
						<TR VALIGN=TOP>
 | 
				
			||||||
| 
						 | 
					@ -370,6 +369,17 @@ Note that it will k in the space of which card was there previously, so in examp
 | 
				
			||||||
		<TD><P>char(1)</P></TD>
 | 
							<TD><P>char(1)</P></TD>
 | 
				
			||||||
		<TD><P>h=hearts, s=spades, d=diamonds, c=clubs, unknown/no card=x</P></TD>
 | 
							<TD><P>h=hearts, s=spades, d=diamonds, c=clubs, unknown/no card=x</P></TD>
 | 
				
			||||||
	</TR>
 | 
						</TR>
 | 
				
			||||||
 | 
						<TR VALIGN=TOP>
 | 
				
			||||||
 | 
							<TD><P>cardXDiscarded</P></TD>
 | 
				
			||||||
 | 
							<TD><P>boolean</P></TD>
 | 
				
			||||||
 | 
							<TD><P>Whether the card was discarded (this only applies to draw games, X can be 1 through 15 since the final cards can obviously not be discarded).</P></TD>
 | 
				
			||||||
 | 
						</TR>
 | 
				
			||||||
 | 
						<TR VALIGN=TOP>
 | 
				
			||||||
 | 
							<TD><P>DrawnX</P></TD>
 | 
				
			||||||
 | 
							<TD><P>smallint</P></TD>
 | 
				
			||||||
 | 
							<TD><p>X can be 1 through 3.<br>
 | 
				
			||||||
 | 
								This field denotes how many cards the player has drawn on each draw.</P></TD>
 | 
				
			||||||
 | 
						</TR>
 | 
				
			||||||
	<TR VALIGN=TOP>
 | 
						<TR VALIGN=TOP>
 | 
				
			||||||
		<TD><P>winnings</P></TD>
 | 
							<TD><P>winnings</P></TD>
 | 
				
			||||||
		<TD><P>int</P></TD>
 | 
							<TD><P>int</P></TD>
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -444,9 +444,9 @@ class Config:
 | 
				
			||||||
    def get_import_parameters(self):
 | 
					    def get_import_parameters(self):
 | 
				
			||||||
        imp = {}
 | 
					        imp = {}
 | 
				
			||||||
        try:
 | 
					        try:
 | 
				
			||||||
            imp['callFpdbHud']   = self.callFpdbHud
 | 
					            imp['callFpdbHud']   = self.imp.callFpdbHud
 | 
				
			||||||
            imp['interval']      = self.interval
 | 
					            imp['interval']      = self.imp.interval
 | 
				
			||||||
            imp['hhArchiveBase'] = self.hhArchiveBase
 | 
					            imp['hhArchiveBase'] = self.imp.hhArchiveBase
 | 
				
			||||||
        except: # Default params
 | 
					        except: # Default params
 | 
				
			||||||
            imp['callFpdbHud']   = True
 | 
					            imp['callFpdbHud']   = True
 | 
				
			||||||
            imp['interval']      = 10
 | 
					            imp['interval']      = 10
 | 
				
			||||||
| 
						 | 
					@ -613,9 +613,7 @@ if __name__== "__main__":
 | 
				
			||||||
    print "----------- END POPUP WINDOW FORMATS -----------"
 | 
					    print "----------- END POPUP WINDOW FORMATS -----------"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    print "\n----------- IMPORT -----------"
 | 
					    print "\n----------- IMPORT -----------"
 | 
				
			||||||
    tmp = c.get_import_parameters()
 | 
					    print c.imp
 | 
				
			||||||
    for param in tmp:
 | 
					 | 
				
			||||||
        print "    " + str(param) + ": " + str(tmp[param])
 | 
					 | 
				
			||||||
    print "----------- END IMPORT -----------"
 | 
					    print "----------- END IMPORT -----------"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    print "\n----------- TABLE VIEW -----------"
 | 
					    print "\n----------- TABLE VIEW -----------"
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -73,13 +73,13 @@ class FpdbSQLQueries:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    	if(self.dbname == 'MySQL InnoDB'):
 | 
					    	if(self.dbname == 'MySQL InnoDB'):
 | 
				
			||||||
    		self.query['createSitesTable'] = """CREATE TABLE Sites (
 | 
					    		self.query['createSitesTable'] = """CREATE TABLE Sites (
 | 
				
			||||||
    					id SMALLINT UNSIGNED UNIQUE AUTO_INCREMENT NOT NULL, PRIMARY KEY (id),
 | 
					    					id SMALLINT UNSIGNED AUTO_INCREMENT NOT NULL, PRIMARY KEY (id),
 | 
				
			||||||
    					name varchar(32) NOT NULL,
 | 
					    					name varchar(32) NOT NULL,
 | 
				
			||||||
    					currency char(3) NOT NULL)
 | 
					    					currency char(3) NOT NULL)
 | 
				
			||||||
    					ENGINE=INNODB""" 
 | 
					    					ENGINE=INNODB""" 
 | 
				
			||||||
    	elif(self.dbname == 'PostgreSQL'):
 | 
					    	elif(self.dbname == 'PostgreSQL'):
 | 
				
			||||||
    		self.query['createSitesTable'] = """CREATE TABLE Sites (
 | 
					    		self.query['createSitesTable'] = """CREATE TABLE Sites (
 | 
				
			||||||
    					id SERIAL UNIQUE, PRIMARY KEY (id),
 | 
					    					id SERIAL, PRIMARY KEY (id),
 | 
				
			||||||
    					name varchar(32),
 | 
					    					name varchar(32),
 | 
				
			||||||
    					currency char(3))"""
 | 
					    					currency char(3))"""
 | 
				
			||||||
    	elif(self.dbname == 'SQLite'):
 | 
					    	elif(self.dbname == 'SQLite'):
 | 
				
			||||||
| 
						 | 
					@ -92,7 +92,7 @@ class FpdbSQLQueries:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    	if(self.dbname == 'MySQL InnoDB'):
 | 
					    	if(self.dbname == 'MySQL InnoDB'):
 | 
				
			||||||
    		self.query['createGametypesTable'] = """CREATE TABLE Gametypes (
 | 
					    		self.query['createGametypesTable'] = """CREATE TABLE Gametypes (
 | 
				
			||||||
    					id SMALLINT UNSIGNED UNIQUE AUTO_INCREMENT NOT NULL, PRIMARY KEY (id),
 | 
					    					id SMALLINT UNSIGNED AUTO_INCREMENT NOT NULL, PRIMARY KEY (id),
 | 
				
			||||||
    					siteId SMALLINT UNSIGNED NOT NULL, FOREIGN KEY (siteId) REFERENCES Sites(id),
 | 
					    					siteId SMALLINT UNSIGNED NOT NULL, FOREIGN KEY (siteId) REFERENCES Sites(id),
 | 
				
			||||||
    					type char(4) NOT NULL,
 | 
					    					type char(4) NOT NULL,
 | 
				
			||||||
    					base char(4) NOT NULL,
 | 
					    					base char(4) NOT NULL,
 | 
				
			||||||
| 
						 | 
					@ -106,7 +106,7 @@ class FpdbSQLQueries:
 | 
				
			||||||
    					ENGINE=INNODB""" 
 | 
					    					ENGINE=INNODB""" 
 | 
				
			||||||
    	elif(self.dbname == 'PostgreSQL'):
 | 
					    	elif(self.dbname == 'PostgreSQL'):
 | 
				
			||||||
    		self.query['createGametypesTable'] = """CREATE TABLE Gametypes (
 | 
					    		self.query['createGametypesTable'] = """CREATE TABLE Gametypes (
 | 
				
			||||||
    					id SERIAL UNIQUE, PRIMARY KEY (id),
 | 
					    					id SERIAL, PRIMARY KEY (id),
 | 
				
			||||||
    					siteId INTEGER, FOREIGN KEY (siteId) REFERENCES Sites(id),
 | 
					    					siteId INTEGER, FOREIGN KEY (siteId) REFERENCES Sites(id),
 | 
				
			||||||
    					type char(4),
 | 
					    					type char(4),
 | 
				
			||||||
    					base char(4),
 | 
					    					base char(4),
 | 
				
			||||||
| 
						 | 
					@ -127,7 +127,7 @@ class FpdbSQLQueries:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    	if(self.dbname == 'MySQL InnoDB'):
 | 
					    	if(self.dbname == 'MySQL InnoDB'):
 | 
				
			||||||
    		self.query['createPlayersTable'] = """CREATE TABLE Players (
 | 
					    		self.query['createPlayersTable'] = """CREATE TABLE Players (
 | 
				
			||||||
    				        id INT UNSIGNED UNIQUE AUTO_INCREMENT NOT NULL, PRIMARY KEY (id),
 | 
					    				        id INT UNSIGNED AUTO_INCREMENT NOT NULL, PRIMARY KEY (id),
 | 
				
			||||||
    				        name VARCHAR(32) CHARACTER SET utf8 NOT NULL,
 | 
					    				        name VARCHAR(32) CHARACTER SET utf8 NOT NULL,
 | 
				
			||||||
    				        siteId SMALLINT UNSIGNED NOT NULL, FOREIGN KEY (siteId) REFERENCES Sites(id),
 | 
					    				        siteId SMALLINT UNSIGNED NOT NULL, FOREIGN KEY (siteId) REFERENCES Sites(id),
 | 
				
			||||||
    				        comment text,
 | 
					    				        comment text,
 | 
				
			||||||
| 
						 | 
					@ -135,7 +135,7 @@ class FpdbSQLQueries:
 | 
				
			||||||
    					ENGINE=INNODB""" 
 | 
					    					ENGINE=INNODB""" 
 | 
				
			||||||
    	elif(self.dbname == 'PostgreSQL'):
 | 
					    	elif(self.dbname == 'PostgreSQL'):
 | 
				
			||||||
    		self.query['createPlayersTable'] = """CREATE TABLE Players (
 | 
					    		self.query['createPlayersTable'] = """CREATE TABLE Players (
 | 
				
			||||||
    					id SERIAL UNIQUE, PRIMARY KEY (id),
 | 
					    					id SERIAL, PRIMARY KEY (id),
 | 
				
			||||||
    					name VARCHAR(32),
 | 
					    					name VARCHAR(32),
 | 
				
			||||||
    					siteId INTEGER, FOREIGN KEY (siteId) REFERENCES Sites(id),
 | 
					    					siteId INTEGER, FOREIGN KEY (siteId) REFERENCES Sites(id),
 | 
				
			||||||
    					comment text,
 | 
					    					comment text,
 | 
				
			||||||
| 
						 | 
					@ -150,7 +150,7 @@ class FpdbSQLQueries:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    	if(self.dbname == 'MySQL InnoDB'):
 | 
					    	if(self.dbname == 'MySQL InnoDB'):
 | 
				
			||||||
    		self.query['createAutoratesTable'] = """CREATE TABLE Autorates (
 | 
					    		self.query['createAutoratesTable'] = """CREATE TABLE Autorates (
 | 
				
			||||||
    				        id BIGINT UNSIGNED UNIQUE AUTO_INCREMENT NOT NULL, PRIMARY KEY (id),
 | 
					    				        id BIGINT UNSIGNED AUTO_INCREMENT NOT NULL, PRIMARY KEY (id),
 | 
				
			||||||
    				        playerId INT UNSIGNED NOT NULL, FOREIGN KEY (playerId) REFERENCES Players(id),
 | 
					    				        playerId INT UNSIGNED NOT NULL, FOREIGN KEY (playerId) REFERENCES Players(id),
 | 
				
			||||||
    				        gametypeId SMALLINT UNSIGNED NOT NULL, FOREIGN KEY (gametypeId) REFERENCES Gametypes(id),
 | 
					    				        gametypeId SMALLINT UNSIGNED NOT NULL, FOREIGN KEY (gametypeId) REFERENCES Gametypes(id),
 | 
				
			||||||
    				        description varchar(50) NOT NULL,
 | 
					    				        description varchar(50) NOT NULL,
 | 
				
			||||||
| 
						 | 
					@ -160,7 +160,7 @@ class FpdbSQLQueries:
 | 
				
			||||||
    					ENGINE=INNODB""" 
 | 
					    					ENGINE=INNODB""" 
 | 
				
			||||||
    	elif(self.dbname == 'PostgreSQL'):
 | 
					    	elif(self.dbname == 'PostgreSQL'):
 | 
				
			||||||
    		self.query['createAutoratesTable'] = """CREATE TABLE Autorates (
 | 
					    		self.query['createAutoratesTable'] = """CREATE TABLE Autorates (
 | 
				
			||||||
    				        id BIGSERIAL UNIQUE, PRIMARY KEY (id),
 | 
					    				        id BIGSERIAL, PRIMARY KEY (id),
 | 
				
			||||||
    				        playerId INT, FOREIGN KEY (playerId) REFERENCES Players(id),
 | 
					    				        playerId INT, FOREIGN KEY (playerId) REFERENCES Players(id),
 | 
				
			||||||
    				        gametypeId INT, FOREIGN KEY (gametypeId) REFERENCES Gametypes(id),
 | 
					    				        gametypeId INT, FOREIGN KEY (gametypeId) REFERENCES Gametypes(id),
 | 
				
			||||||
    				        description varchar(50),
 | 
					    				        description varchar(50),
 | 
				
			||||||
| 
						 | 
					@ -177,7 +177,7 @@ class FpdbSQLQueries:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    	if(self.dbname == 'MySQL InnoDB'):
 | 
					    	if(self.dbname == 'MySQL InnoDB'):
 | 
				
			||||||
    		self.query['createHandsTable'] = """CREATE TABLE Hands (
 | 
					    		self.query['createHandsTable'] = """CREATE TABLE Hands (
 | 
				
			||||||
    				        id BIGINT UNSIGNED UNIQUE AUTO_INCREMENT NOT NULL, PRIMARY KEY (id),
 | 
					    				        id BIGINT UNSIGNED AUTO_INCREMENT NOT NULL, PRIMARY KEY (id),
 | 
				
			||||||
    				        tableName VARCHAR(20) NOT NULL,
 | 
					    				        tableName VARCHAR(20) NOT NULL,
 | 
				
			||||||
    				        siteHandNo BIGINT NOT NULL,
 | 
					    				        siteHandNo BIGINT NOT NULL,
 | 
				
			||||||
    				        gametypeId SMALLINT UNSIGNED NOT NULL, FOREIGN KEY (gametypeId) REFERENCES Gametypes(id),
 | 
					    				        gametypeId SMALLINT UNSIGNED NOT NULL, FOREIGN KEY (gametypeId) REFERENCES Gametypes(id),
 | 
				
			||||||
| 
						 | 
					@ -190,7 +190,7 @@ class FpdbSQLQueries:
 | 
				
			||||||
    					ENGINE=INNODB""" 
 | 
					    					ENGINE=INNODB""" 
 | 
				
			||||||
    	elif(self.dbname == 'PostgreSQL'):
 | 
					    	elif(self.dbname == 'PostgreSQL'):
 | 
				
			||||||
    		self.query['createHandsTable'] = """CREATE TABLE Hands (
 | 
					    		self.query['createHandsTable'] = """CREATE TABLE Hands (
 | 
				
			||||||
    					id BIGSERIAL UNIQUE, PRIMARY KEY (id),
 | 
					    					id BIGSERIAL, PRIMARY KEY (id),
 | 
				
			||||||
    					tableName VARCHAR(20),
 | 
					    					tableName VARCHAR(20),
 | 
				
			||||||
    					siteHandNo BIGINT,
 | 
					    					siteHandNo BIGINT,
 | 
				
			||||||
    					gametypeId INT, FOREIGN KEY (gametypeId) REFERENCES Gametypes(id),
 | 
					    					gametypeId INT, FOREIGN KEY (gametypeId) REFERENCES Gametypes(id),
 | 
				
			||||||
| 
						 | 
					@ -210,7 +210,7 @@ class FpdbSQLQueries:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    	if(self.dbname == 'MySQL InnoDB'):
 | 
					    	if(self.dbname == 'MySQL InnoDB'):
 | 
				
			||||||
    		self.query['createBoardCardsTable'] = """CREATE TABLE BoardCards (
 | 
					    		self.query['createBoardCardsTable'] = """CREATE TABLE BoardCards (
 | 
				
			||||||
    				        id BIGINT UNSIGNED UNIQUE AUTO_INCREMENT NOT NULL, PRIMARY KEY (id),
 | 
					    				        id BIGINT UNSIGNED AUTO_INCREMENT NOT NULL, PRIMARY KEY (id),
 | 
				
			||||||
    				        handId BIGINT UNSIGNED NOT NULL, FOREIGN KEY (handId) REFERENCES Hands(id),
 | 
					    				        handId BIGINT UNSIGNED NOT NULL, FOREIGN KEY (handId) REFERENCES Hands(id),
 | 
				
			||||||
    				        card1Value smallint NOT NULL,
 | 
					    				        card1Value smallint NOT NULL,
 | 
				
			||||||
    				        card1Suit char(1) NOT NULL,
 | 
					    				        card1Suit char(1) NOT NULL,
 | 
				
			||||||
| 
						 | 
					@ -225,7 +225,7 @@ class FpdbSQLQueries:
 | 
				
			||||||
    					ENGINE=INNODB""" 
 | 
					    					ENGINE=INNODB""" 
 | 
				
			||||||
    	elif(self.dbname == 'PostgreSQL'):
 | 
					    	elif(self.dbname == 'PostgreSQL'):
 | 
				
			||||||
    		self.query['createBoardCardsTable'] = """CREATE TABLE BoardCards (
 | 
					    		self.query['createBoardCardsTable'] = """CREATE TABLE BoardCards (
 | 
				
			||||||
    					id BIGSERIAL UNIQUE, PRIMARY KEY (id),
 | 
					    					id BIGSERIAL, PRIMARY KEY (id),
 | 
				
			||||||
    					handId BIGINT, FOREIGN KEY (handId) REFERENCES Hands(id),
 | 
					    					handId BIGINT, FOREIGN KEY (handId) REFERENCES Hands(id),
 | 
				
			||||||
    					card1Value smallint,
 | 
					    					card1Value smallint,
 | 
				
			||||||
    					card1Suit char(1),
 | 
					    					card1Suit char(1),
 | 
				
			||||||
| 
						 | 
					@ -247,7 +247,7 @@ class FpdbSQLQueries:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    	if(self.dbname == 'MySQL InnoDB'):
 | 
					    	if(self.dbname == 'MySQL InnoDB'):
 | 
				
			||||||
    		self.query['createTourneyTypesTable'] = """CREATE TABLE TourneyTypes (
 | 
					    		self.query['createTourneyTypesTable'] = """CREATE TABLE TourneyTypes (
 | 
				
			||||||
    				        id SMALLINT UNSIGNED UNIQUE AUTO_INCREMENT NOT NULL, PRIMARY KEY (id),
 | 
					    				        id SMALLINT UNSIGNED AUTO_INCREMENT NOT NULL, PRIMARY KEY (id),
 | 
				
			||||||
    				        siteId SMALLINT UNSIGNED NOT NULL, FOREIGN KEY (siteId) REFERENCES Sites(id),
 | 
					    				        siteId SMALLINT UNSIGNED NOT NULL, FOREIGN KEY (siteId) REFERENCES Sites(id),
 | 
				
			||||||
    				        buyin INT NOT NULL,
 | 
					    				        buyin INT NOT NULL,
 | 
				
			||||||
    				        fee INT NOT NULL,
 | 
					    				        fee INT NOT NULL,
 | 
				
			||||||
| 
						 | 
					@ -272,7 +272,7 @@ class FpdbSQLQueries:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    	if(self.dbname == 'MySQL InnoDB'):
 | 
					    	if(self.dbname == 'MySQL InnoDB'):
 | 
				
			||||||
    		self.query['createTourneysTable'] = """CREATE TABLE Tourneys (
 | 
					    		self.query['createTourneysTable'] = """CREATE TABLE Tourneys (
 | 
				
			||||||
    					id INT UNSIGNED UNIQUE AUTO_INCREMENT NOT NULL, PRIMARY KEY (id),
 | 
					    					id INT UNSIGNED AUTO_INCREMENT NOT NULL, PRIMARY KEY (id),
 | 
				
			||||||
    					tourneyTypeId SMALLINT UNSIGNED NOT NULL, FOREIGN KEY (tourneyTypeId) REFERENCES TourneyTypes(id),
 | 
					    					tourneyTypeId SMALLINT UNSIGNED NOT NULL, FOREIGN KEY (tourneyTypeId) REFERENCES TourneyTypes(id),
 | 
				
			||||||
    					siteTourneyNo BIGINT NOT NULL,
 | 
					    					siteTourneyNo BIGINT NOT NULL,
 | 
				
			||||||
    					entries INT NOT NULL,
 | 
					    					entries INT NOT NULL,
 | 
				
			||||||
| 
						 | 
					@ -283,7 +283,7 @@ class FpdbSQLQueries:
 | 
				
			||||||
    					ENGINE=INNODB"""
 | 
					    					ENGINE=INNODB"""
 | 
				
			||||||
    	elif(self.dbname == 'PostgreSQL'):
 | 
					    	elif(self.dbname == 'PostgreSQL'):
 | 
				
			||||||
    		self.query['createTourneysTable'] = """CREATE TABLE Tourneys (
 | 
					    		self.query['createTourneysTable'] = """CREATE TABLE Tourneys (
 | 
				
			||||||
    					id SERIAL UNIQUE, PRIMARY KEY (id),
 | 
					    					id SERIAL, PRIMARY KEY (id),
 | 
				
			||||||
    					tourneyTypeId INT, FOREIGN KEY (tourneyTypeId) REFERENCES TourneyTypes(id),
 | 
					    					tourneyTypeId INT, FOREIGN KEY (tourneyTypeId) REFERENCES TourneyTypes(id),
 | 
				
			||||||
    					siteTourneyNo BIGINT,
 | 
					    					siteTourneyNo BIGINT,
 | 
				
			||||||
    					entries INT,
 | 
					    					entries INT,
 | 
				
			||||||
| 
						 | 
					@ -300,7 +300,7 @@ class FpdbSQLQueries:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    	if(self.dbname == 'MySQL InnoDB'):
 | 
					    	if(self.dbname == 'MySQL InnoDB'):
 | 
				
			||||||
    		self.query['createHandsPlayersTable'] = """CREATE TABLE HandsPlayers (
 | 
					    		self.query['createHandsPlayersTable'] = """CREATE TABLE HandsPlayers (
 | 
				
			||||||
    					id BIGINT UNSIGNED UNIQUE AUTO_INCREMENT NOT NULL, PRIMARY KEY (id),
 | 
					    					id BIGINT UNSIGNED AUTO_INCREMENT NOT NULL, PRIMARY KEY (id),
 | 
				
			||||||
    					handId BIGINT UNSIGNED NOT NULL, FOREIGN KEY (handId) REFERENCES Hands(id),
 | 
					    					handId BIGINT UNSIGNED NOT NULL, FOREIGN KEY (handId) REFERENCES Hands(id),
 | 
				
			||||||
    					playerId INT UNSIGNED NOT NULL, FOREIGN KEY (playerId) REFERENCES Players(id),
 | 
					    					playerId INT UNSIGNED NOT NULL, FOREIGN KEY (playerId) REFERENCES Players(id),
 | 
				
			||||||
    					startCash INT NOT NULL,
 | 
					    					startCash INT NOT NULL,
 | 
				
			||||||
| 
						 | 
					@ -332,7 +332,7 @@ class FpdbSQLQueries:
 | 
				
			||||||
    					ENGINE=INNODB"""
 | 
					    					ENGINE=INNODB"""
 | 
				
			||||||
    	elif(self.dbname == 'PostgreSQL'):
 | 
					    	elif(self.dbname == 'PostgreSQL'):
 | 
				
			||||||
    		self.query['createHandsPlayersTable'] = """CREATE TABLE HandsPlayers (
 | 
					    		self.query['createHandsPlayersTable'] = """CREATE TABLE HandsPlayers (
 | 
				
			||||||
    					id BIGSERIAL UNIQUE, PRIMARY KEY (id),
 | 
					    					id BIGSERIAL, PRIMARY KEY (id),
 | 
				
			||||||
    					handId BIGINT, FOREIGN KEY (handId) REFERENCES Hands(id),
 | 
					    					handId BIGINT, FOREIGN KEY (handId) REFERENCES Hands(id),
 | 
				
			||||||
    					playerId INT, FOREIGN KEY (playerId) REFERENCES Players(id),
 | 
					    					playerId INT, FOREIGN KEY (playerId) REFERENCES Players(id),
 | 
				
			||||||
    					startCash INT,
 | 
					    					startCash INT,
 | 
				
			||||||
| 
						 | 
					@ -370,7 +370,7 @@ class FpdbSQLQueries:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    	if(self.dbname == 'MySQL InnoDB'):
 | 
					    	if(self.dbname == 'MySQL InnoDB'):
 | 
				
			||||||
    		self.query['createTourneysPlayersTable'] = """CREATE TABLE TourneysPlayers (
 | 
					    		self.query['createTourneysPlayersTable'] = """CREATE TABLE TourneysPlayers (
 | 
				
			||||||
    					id BIGINT UNSIGNED UNIQUE AUTO_INCREMENT NOT NULL, PRIMARY KEY (id),
 | 
					    					id BIGINT UNSIGNED AUTO_INCREMENT NOT NULL, PRIMARY KEY (id),
 | 
				
			||||||
    					tourneyId INT UNSIGNED NOT NULL, FOREIGN KEY (tourneyId) REFERENCES Tourneys(id),
 | 
					    					tourneyId INT UNSIGNED NOT NULL, FOREIGN KEY (tourneyId) REFERENCES Tourneys(id),
 | 
				
			||||||
    					playerId INT UNSIGNED NOT NULL, FOREIGN KEY (playerId) REFERENCES Players(id),
 | 
					    					playerId INT UNSIGNED NOT NULL, FOREIGN KEY (playerId) REFERENCES Players(id),
 | 
				
			||||||
    					payinAmount INT NOT NULL,
 | 
					    					payinAmount INT NOT NULL,
 | 
				
			||||||
| 
						 | 
					@ -381,7 +381,7 @@ class FpdbSQLQueries:
 | 
				
			||||||
    					ENGINE=INNODB"""
 | 
					    					ENGINE=INNODB"""
 | 
				
			||||||
    	elif(self.dbname == 'PostgreSQL'):
 | 
					    	elif(self.dbname == 'PostgreSQL'):
 | 
				
			||||||
    		self.query['createTourneysPlayersTable'] = """CREATE TABLE TourneysPlayers (
 | 
					    		self.query['createTourneysPlayersTable'] = """CREATE TABLE TourneysPlayers (
 | 
				
			||||||
    					id BIGSERIAL UNIQUE, PRIMARY KEY (id),
 | 
					    					id BIGSERIAL, PRIMARY KEY (id),
 | 
				
			||||||
    					tourneyId INT, FOREIGN KEY (tourneyId) REFERENCES Tourneys(id),
 | 
					    					tourneyId INT, FOREIGN KEY (tourneyId) REFERENCES Tourneys(id),
 | 
				
			||||||
    					playerId INT, FOREIGN KEY (playerId) REFERENCES Players(id),
 | 
					    					playerId INT, FOREIGN KEY (playerId) REFERENCES Players(id),
 | 
				
			||||||
    					payinAmount INT,
 | 
					    					payinAmount INT,
 | 
				
			||||||
| 
						 | 
					@ -399,7 +399,7 @@ class FpdbSQLQueries:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    	if(self.dbname == 'MySQL InnoDB'):
 | 
					    	if(self.dbname == 'MySQL InnoDB'):
 | 
				
			||||||
    		self.query['createHandsActionsTable'] = """CREATE TABLE HandsActions (
 | 
					    		self.query['createHandsActionsTable'] = """CREATE TABLE HandsActions (
 | 
				
			||||||
    					id BIGINT UNSIGNED UNIQUE AUTO_INCREMENT NOT NULL, PRIMARY KEY (id),
 | 
					    					id BIGINT UNSIGNED AUTO_INCREMENT NOT NULL, PRIMARY KEY (id),
 | 
				
			||||||
    					handPlayerId BIGINT UNSIGNED NOT NULL, FOREIGN KEY (handPlayerId) REFERENCES HandsPlayers(id),
 | 
					    					handPlayerId BIGINT UNSIGNED NOT NULL, FOREIGN KEY (handPlayerId) REFERENCES HandsPlayers(id),
 | 
				
			||||||
    					street SMALLINT NOT NULL,
 | 
					    					street SMALLINT NOT NULL,
 | 
				
			||||||
    					actionNo SMALLINT NOT NULL,
 | 
					    					actionNo SMALLINT NOT NULL,
 | 
				
			||||||
| 
						 | 
					@ -411,7 +411,7 @@ class FpdbSQLQueries:
 | 
				
			||||||
    					ENGINE=INNODB"""
 | 
					    					ENGINE=INNODB"""
 | 
				
			||||||
    	elif(self.dbname == 'PostgreSQL'):
 | 
					    	elif(self.dbname == 'PostgreSQL'):
 | 
				
			||||||
    		self.query['createHandsActionsTable'] = """CREATE TABLE HandsActions (
 | 
					    		self.query['createHandsActionsTable'] = """CREATE TABLE HandsActions (
 | 
				
			||||||
    					id BIGSERIAL UNIQUE, PRIMARY KEY (id),
 | 
					    					id BIGSERIAL, PRIMARY KEY (id),
 | 
				
			||||||
    					handPlayerId BIGINT, FOREIGN KEY (handPlayerId) REFERENCES HandsPlayers(id),
 | 
					    					handPlayerId BIGINT, FOREIGN KEY (handPlayerId) REFERENCES HandsPlayers(id),
 | 
				
			||||||
    					street SMALLINT,
 | 
					    					street SMALLINT,
 | 
				
			||||||
    					actionNo SMALLINT,
 | 
					    					actionNo SMALLINT,
 | 
				
			||||||
| 
						 | 
					@ -430,7 +430,7 @@ class FpdbSQLQueries:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    	if(self.dbname == 'MySQL InnoDB'):
 | 
					    	if(self.dbname == 'MySQL InnoDB'):
 | 
				
			||||||
    		self.query['createHudCacheTable'] = """CREATE TABLE HudCache (
 | 
					    		self.query['createHudCacheTable'] = """CREATE TABLE HudCache (
 | 
				
			||||||
    					id BIGINT UNSIGNED UNIQUE AUTO_INCREMENT NOT NULL, PRIMARY KEY (id),
 | 
					    					id BIGINT UNSIGNED AUTO_INCREMENT NOT NULL, PRIMARY KEY (id),
 | 
				
			||||||
    					gametypeId SMALLINT UNSIGNED NOT NULL, FOREIGN KEY (gametypeId) REFERENCES Gametypes(id),
 | 
					    					gametypeId SMALLINT UNSIGNED NOT NULL, FOREIGN KEY (gametypeId) REFERENCES Gametypes(id),
 | 
				
			||||||
    					playerId INT UNSIGNED NOT NULL, FOREIGN KEY (playerId) REFERENCES Players(id),
 | 
					    					playerId INT UNSIGNED NOT NULL, FOREIGN KEY (playerId) REFERENCES Players(id),
 | 
				
			||||||
    					activeSeats SMALLINT NOT NULL,
 | 
					    					activeSeats SMALLINT NOT NULL,
 | 
				
			||||||
| 
						 | 
					@ -503,7 +503,7 @@ class FpdbSQLQueries:
 | 
				
			||||||
    					ENGINE=INNODB"""
 | 
					    					ENGINE=INNODB"""
 | 
				
			||||||
    	elif(self.dbname == 'PostgreSQL'):
 | 
					    	elif(self.dbname == 'PostgreSQL'):
 | 
				
			||||||
    		self.query['createHudCacheTable'] = """CREATE TABLE HudCache (
 | 
					    		self.query['createHudCacheTable'] = """CREATE TABLE HudCache (
 | 
				
			||||||
    					id BIGSERIAL UNIQUE, PRIMARY KEY (id),
 | 
					    					id BIGSERIAL, PRIMARY KEY (id),
 | 
				
			||||||
    					gametypeId INT, FOREIGN KEY (gametypeId) REFERENCES Gametypes(id),
 | 
					    					gametypeId INT, FOREIGN KEY (gametypeId) REFERENCES Gametypes(id),
 | 
				
			||||||
    					playerId INT, FOREIGN KEY (playerId) REFERENCES Players(id),
 | 
					    					playerId INT, FOREIGN KEY (playerId) REFERENCES Players(id),
 | 
				
			||||||
    					activeSeats SMALLINT,
 | 
					    					activeSeats SMALLINT,
 | 
				
			||||||
| 
						 | 
					@ -576,26 +576,23 @@ class FpdbSQLQueries:
 | 
				
			||||||
        if(self.dbname == 'MySQL InnoDB'):
 | 
					        if(self.dbname == 'MySQL InnoDB'):
 | 
				
			||||||
            self.query['addTourneyIndex'] = """ALTER TABLE Tourneys ADD INDEX siteTourneyNo(siteTourneyNo)"""
 | 
					            self.query['addTourneyIndex'] = """ALTER TABLE Tourneys ADD INDEX siteTourneyNo(siteTourneyNo)"""
 | 
				
			||||||
        elif(self.dbname == 'PostgreSQL'):
 | 
					        elif(self.dbname == 'PostgreSQL'):
 | 
				
			||||||
            # FIXME: This query has a different syntax
 | 
					            self.query['addTourneyIndex'] = """CREATE INDEX siteTourneyNo ON Tourneys (siteTourneyNo)"""
 | 
				
			||||||
            self.query['addTourneyIndex'] = """ALTER TABLE Tourneys ADD INDEX siteTourneyNo(siteTourneyNo)"""
 | 
					 | 
				
			||||||
        elif(self.dbname == 'SQLite'):
 | 
					        elif(self.dbname == 'SQLite'):
 | 
				
			||||||
            self.query['addHandsIndex'] = """ """
 | 
					            self.query['addHandsIndex'] = """ """
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if(self.dbname == 'MySQL InnoDB'):
 | 
					        if(self.dbname == 'MySQL InnoDB'):
 | 
				
			||||||
            self.query['addHandsIndex'] = """ALTER TABLE Hands ADD INDEX siteHandNo(siteHandNo)"""
 | 
					            self.query['addHandsIndex'] = """ALTER TABLE Hands ADD INDEX siteHandNo(siteHandNo)"""
 | 
				
			||||||
        elif(self.dbname == 'PostgreSQL'):
 | 
					        elif(self.dbname == 'PostgreSQL'):
 | 
				
			||||||
            # FIXME: This query has a different syntax
 | 
					            self.query['addHandsIndex'] = """CREATE INDEX siteHandNo ON Hands (siteHandNo)"""
 | 
				
			||||||
            self.query['addHandsIndex'] = """ALTER TABLE Hands ADD INDEX siteHandNo(siteHandNo)"""
 | 
					 | 
				
			||||||
        elif(self.dbname == 'SQLite'):
 | 
					        elif(self.dbname == 'SQLite'):
 | 
				
			||||||
            self.query['addHandsIndex'] = """ """
 | 
					            self.query['addHandsIndex'] = """ """
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if(self.dbname == 'MySQL InnoDB'):
 | 
					        if(self.dbname == 'MySQL InnoDB'):
 | 
				
			||||||
            self.query['addPlayersIndex'] = """ALTER TABLE Players ADD INDEX name(name)"""
 | 
					            self.query['addPlayersIndex'] = """ALTER TABLE Players ADD INDEX name(name)"""
 | 
				
			||||||
        elif(self.dbname == 'PostgreSQL'):
 | 
					        elif(self.dbname == 'PostgreSQL'):
 | 
				
			||||||
            # FIXME: This query has a different syntax
 | 
					            self.query['addPlayersIndex'] = """CREATE INDEX name ON Players (name)"""
 | 
				
			||||||
            self.query['addHandsIndex'] = """ALTER TABLE Hands ADD INDEX siteHandNo(siteHandNo)"""
 | 
					 | 
				
			||||||
        elif(self.dbname == 'SQLite'):
 | 
					        elif(self.dbname == 'SQLite'):
 | 
				
			||||||
            self.query['addHandsIndex'] = """ """
 | 
					            self.query['addPlayersIndex'] = """ """
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    	################################
 | 
					    	################################
 | 
				
			||||||
    	# Queries used in GuiGraphViewer
 | 
					    	# Queries used in GuiGraphViewer
 | 
				
			||||||
| 
						 | 
					@ -633,6 +630,11 @@ class FpdbSQLQueries:
 | 
				
			||||||
    				WHERE Players.name = %s AND HandsPlayers.handId = %s 
 | 
					    				WHERE Players.name = %s AND HandsPlayers.handId = %s 
 | 
				
			||||||
    				AND Players.siteId = %s AND (tourneysPlayersId IS NULL)"""
 | 
					    				AND Players.siteId = %s AND (tourneysPlayersId IS NULL)"""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    	if(self.dbname == 'MySQL InnoDB') or (self.dbname == 'PostgreSQL'):
 | 
				
			||||||
 | 
					    		self.query['getPlayerId'] = """SELECT id from Players where name = %s"""
 | 
				
			||||||
 | 
					    	elif(self.dbname == 'SQLite'):
 | 
				
			||||||
 | 
					    		self.query['getPlayerId'] = """SELECT id from Players where name = %s"""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    	if(self.dbname == 'MySQL InnoDB') or (self.dbname == 'PostgreSQL'):
 | 
					    	if(self.dbname == 'MySQL InnoDB') or (self.dbname == 'PostgreSQL'):
 | 
				
			||||||
    		self.query['getRingProfitAllHandsPlayerIdSite'] = """
 | 
					    		self.query['getRingProfitAllHandsPlayerIdSite'] = """
 | 
				
			||||||
    			SELECT hp.handId, hp.winnings, SUM(ha.amount), hp.winnings - SUM(ha.amount)
 | 
					    			SELECT hp.handId, hp.winnings, SUM(ha.amount), hp.winnings - SUM(ha.amount)
 | 
				
			||||||
| 
						 | 
					@ -697,13 +699,11 @@ class FpdbSQLQueries:
 | 
				
			||||||
                           ,round(100*sum(street2Aggr)/sum(street2Seen)) AS TuAFq
 | 
					                           ,round(100*sum(street2Aggr)/sum(street2Seen)) AS TuAFq
 | 
				
			||||||
                           ,round(100*sum(street3Aggr)/sum(street3Seen)) AS RvAFq
 | 
					                           ,round(100*sum(street3Aggr)/sum(street3Seen)) AS RvAFq
 | 
				
			||||||
                           ,round(100*(sum(street1Aggr)+sum(street2Aggr)+sum(street3Aggr))
 | 
					                           ,round(100*(sum(street1Aggr)+sum(street2Aggr)+sum(street3Aggr))
 | 
				
			||||||
 | 
					 | 
				
			||||||
                /(sum(street1Seen)+sum(street2Seen)+sum(street3Seen))) AS PFAFq
 | 
					                /(sum(street1Seen)+sum(street2Seen)+sum(street3Seen))) AS PFAFq
 | 
				
			||||||
                     from Gametypes gt
 | 
					                     from Gametypes gt
 | 
				
			||||||
                          inner join Sites s on s.Id = gt.siteId
 | 
					                          inner join Sites s on s.Id = gt.siteId
 | 
				
			||||||
                          inner join HudCache hc on hc.gameTypeId = gt.Id
 | 
					                          inner join HudCache hc on hc.gameTypeId = gt.Id
 | 
				
			||||||
                     where gt.limittype = 'nl'
 | 
					                     where hc.playerId in <player_test>
 | 
				
			||||||
                     and   hc.playerId in (3)   # use <player_test> here?
 | 
					 | 
				
			||||||
                                                # use <gametype_test> here ?
 | 
					                                                # use <gametype_test> here ?
 | 
				
			||||||
                     group by hc.gametypeId
 | 
					                     group by hc.gametypeId
 | 
				
			||||||
                    ) stats
 | 
					                    ) stats
 | 
				
			||||||
| 
						 | 
					@ -716,7 +716,7 @@ class FpdbSQLQueries:
 | 
				
			||||||
                          from HandsPlayers hp
 | 
					                          from HandsPlayers hp
 | 
				
			||||||
                          inner join Hands h         ON h.id            = hp.handId
 | 
					                          inner join Hands h         ON h.id            = hp.handId
 | 
				
			||||||
                          inner join HandsActions ha ON ha.handPlayerId = hp.id
 | 
					                          inner join HandsActions ha ON ha.handPlayerId = hp.id
 | 
				
			||||||
                          where hp.playerId in (3)   # use <player_test> here?
 | 
					                          where hp.playerId in <player_test>
 | 
				
			||||||
                                                     # use <gametype_test> here ?
 | 
					                                                     # use <gametype_test> here ?
 | 
				
			||||||
                          and   hp.tourneysPlayersId IS NULL
 | 
					                          and   hp.tourneysPlayersId IS NULL
 | 
				
			||||||
                          group by hp.handId, h.gameTypeId, hp.position, hp.winnings
 | 
					                          group by hp.handId, h.gameTypeId, hp.position, hp.winnings
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -308,4 +308,3 @@ class GuiGraphViewer (threading.Thread):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        self.leftPanelBox.show()
 | 
					        self.leftPanelBox.show()
 | 
				
			||||||
        self.graphBox.show()
 | 
					        self.graphBox.show()
 | 
				
			||||||
 | 
					 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -31,7 +31,9 @@ class GuiPlayerStats (threading.Thread):
 | 
				
			||||||
        return self.main_hbox
 | 
					        return self.main_hbox
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def toggleCallback(self, widget, data=None):
 | 
					    def toggleCallback(self, widget, data=None):
 | 
				
			||||||
        print "%s was toggled %s" % (data, ("OFF", "ON")[widget.get_active()])
 | 
					#        print "%s was toggled %s" % (data, ("OFF", "ON")[widget.get_active()])
 | 
				
			||||||
 | 
					        self.activesite = data
 | 
				
			||||||
 | 
					        print "DEBUG: activesite set to %s" %(self.activesite)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def refreshStats(self, widget, data):
 | 
					    def refreshStats(self, widget, data):
 | 
				
			||||||
        try: self.stats_table.destroy()
 | 
					        try: self.stats_table.destroy()
 | 
				
			||||||
| 
						 | 
					@ -39,7 +41,15 @@ class GuiPlayerStats (threading.Thread):
 | 
				
			||||||
        self.fillStatsFrame(self.stats_frame)
 | 
					        self.fillStatsFrame(self.stats_frame)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def fillStatsFrame(self, vbox):
 | 
					    def fillStatsFrame(self, vbox):
 | 
				
			||||||
        self.cursor.execute(self.sql.query['playerStats'])
 | 
					        # Get currently active site and grab playerid
 | 
				
			||||||
 | 
					        tmp = self.sql.query['playerStats']
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        result = self.cursor.execute(self.sql.query['getPlayerId'], self.heroes[self.activesite])
 | 
				
			||||||
 | 
					        result = self.db.cursor.fetchall()
 | 
				
			||||||
 | 
					        if not result == ():
 | 
				
			||||||
 | 
					                pid = result[0][0]
 | 
				
			||||||
 | 
					                tmp = tmp.replace("<player_test>", "(" + str(pid) + ")")
 | 
				
			||||||
 | 
					                self.cursor.execute(tmp)
 | 
				
			||||||
                result = self.db.cursor.fetchall()
 | 
					                result = self.db.cursor.fetchall()
 | 
				
			||||||
                cols = 18
 | 
					                cols = 18
 | 
				
			||||||
                rows = len(result)+1 # +1 for title row
 | 
					                rows = len(result)+1 # +1 for title row
 | 
				
			||||||
| 
						 | 
					@ -61,7 +71,6 @@ class GuiPlayerStats (threading.Thread):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                for row in range(rows-1):
 | 
					                for row in range(rows-1):
 | 
				
			||||||
                    for col in range(cols):
 | 
					                    for col in range(cols):
 | 
				
			||||||
                print "result[%s][%s]: %s" %(row-1, col, result[row-1][col])
 | 
					 | 
				
			||||||
                        if(row%2 == 0):
 | 
					                        if(row%2 == 0):
 | 
				
			||||||
                            bgcolor = "white"
 | 
					                            bgcolor = "white"
 | 
				
			||||||
                        else:
 | 
					                        else:
 | 
				
			||||||
| 
						 | 
					@ -92,10 +101,15 @@ class GuiPlayerStats (threading.Thread):
 | 
				
			||||||
        hbox.show()
 | 
					        hbox.show()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def createPlayerLine(self, hbox, site, player):
 | 
					    def createPlayerLine(self, hbox, site, player):
 | 
				
			||||||
 | 
					        if(self.buttongroup == None):
 | 
				
			||||||
            button = gtk.RadioButton(None, site + " id:")
 | 
					            button = gtk.RadioButton(None, site + " id:")
 | 
				
			||||||
 | 
					            button.set_active(True)
 | 
				
			||||||
 | 
					            self.buttongroup = button
 | 
				
			||||||
 | 
					            self.activesite = site
 | 
				
			||||||
 | 
					        else:
 | 
				
			||||||
 | 
					            button = gtk.RadioButton(self.buttongroup, site + " id:")
 | 
				
			||||||
        hbox.pack_start(button, True, True, 0)
 | 
					        hbox.pack_start(button, True, True, 0)
 | 
				
			||||||
        button.connect("toggled", self.toggleCallback, site)
 | 
					        button.connect("toggled", self.toggleCallback, site)
 | 
				
			||||||
#        button.set_active(True)
 | 
					 | 
				
			||||||
        button.show()
 | 
					        button.show()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        pname = gtk.Entry()
 | 
					        pname = gtk.Entry()
 | 
				
			||||||
| 
						 | 
					@ -119,6 +133,9 @@ class GuiPlayerStats (threading.Thread):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        self.sql = querylist
 | 
					        self.sql = querylist
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        self.activesite = None
 | 
				
			||||||
 | 
					        self.buttongroup = None
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        self.heroes = {}
 | 
					        self.heroes = {}
 | 
				
			||||||
        self.stat_table = None
 | 
					        self.stat_table = None
 | 
				
			||||||
        self.stats_frame = None
 | 
					        self.stats_frame = None
 | 
				
			||||||
| 
						 | 
					@ -138,11 +155,11 @@ class GuiPlayerStats (threading.Thread):
 | 
				
			||||||
        statsFrame = gtk.Frame("Stats:")
 | 
					        statsFrame = gtk.Frame("Stats:")
 | 
				
			||||||
        statsFrame.set_label_align(0.0, 0.0)
 | 
					        statsFrame.set_label_align(0.0, 0.0)
 | 
				
			||||||
        statsFrame.show()
 | 
					        statsFrame.show()
 | 
				
			||||||
        vbox = gtk.VBox(False, 0)
 | 
					        self.stats_frame = gtk.VBox(False, 0)
 | 
				
			||||||
        vbox.show()
 | 
					        self.stats_frame.show()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        self.fillStatsFrame(vbox)
 | 
					        self.fillStatsFrame(self.stats_frame)
 | 
				
			||||||
        statsFrame.add(vbox)
 | 
					        statsFrame.add(self.stats_frame)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        self.main_hbox.pack_start(playerFrame)
 | 
					        self.main_hbox.pack_start(playerFrame)
 | 
				
			||||||
        self.main_hbox.pack_start(statsFrame)
 | 
					        self.main_hbox.pack_start(statsFrame)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -169,4 +169,3 @@ if __name__== "__main__":
 | 
				
			||||||
    main_window.show_all()
 | 
					    main_window.show_all()
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    gtk.main()
 | 
					    gtk.main()
 | 
				
			||||||
 | 
					 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -92,14 +92,22 @@ class Hud:
 | 
				
			||||||
        self.menu.append(self.item1)
 | 
					        self.menu.append(self.item1)
 | 
				
			||||||
        self.item1.connect("activate", self.kill_hud)
 | 
					        self.item1.connect("activate", self.kill_hud)
 | 
				
			||||||
        self.item1.show()
 | 
					        self.item1.show()
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
        self.item2 = gtk.MenuItem('Save Layout')
 | 
					        self.item2 = gtk.MenuItem('Save Layout')
 | 
				
			||||||
        self.menu.append(self.item2)
 | 
					        self.menu.append(self.item2)
 | 
				
			||||||
        self.item2.connect("activate", self.save_layout)
 | 
					        self.item2.connect("activate", self.save_layout)
 | 
				
			||||||
        self.item2.show()
 | 
					        self.item2.show()
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
        self.item3 = gtk.MenuItem('Reposition Stats')
 | 
					        self.item3 = gtk.MenuItem('Reposition Stats')
 | 
				
			||||||
        self.menu.append(self.item3)
 | 
					        self.menu.append(self.item3)
 | 
				
			||||||
        self.item3.connect("activate", self.reposition_windows)
 | 
					        self.item3.connect("activate", self.reposition_windows)
 | 
				
			||||||
        self.item3.show()
 | 
					        self.item3.show()
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        self.item4 = gtk.MenuItem('Debug Stat Windows')
 | 
				
			||||||
 | 
					        self.menu.append(self.item4)
 | 
				
			||||||
 | 
					        self.item4.connect("activate", self.debug_stat_windows)
 | 
				
			||||||
 | 
					        self.item4.show()
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
        self.ebox.connect_object("button-press-event", self.on_button_press, self.menu)
 | 
					        self.ebox.connect_object("button-press-event", self.on_button_press, self.menu)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        self.main_window.show_all()
 | 
					        self.main_window.show_all()
 | 
				
			||||||
| 
						 | 
					@ -113,6 +121,19 @@ class Hud:
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
        self.main_window.set_destroy_with_parent(True)
 | 
					        self.main_window.set_destroy_with_parent(True)
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
 | 
					    def update_table_position(self):
 | 
				
			||||||
 | 
					        (x, y) = self.main_window.parentgdkhandle.get_origin()
 | 
				
			||||||
 | 
					        if self.table.x != x or self.table.y != y:
 | 
				
			||||||
 | 
					            self.table.x = x
 | 
				
			||||||
 | 
					            self.table.y = y
 | 
				
			||||||
 | 
					            self.main_window.move(x, y)
 | 
				
			||||||
 | 
					            adj = self.adj_seats(self.hand, self.config)
 | 
				
			||||||
 | 
					            loc = self.config.get_locations(self.table.site, self.max)
 | 
				
			||||||
 | 
					            for i in range(1, self.max + 1):           
 | 
				
			||||||
 | 
					                (x, y) = loc[adj[i]]
 | 
				
			||||||
 | 
					                if self.stat_windows.has_key(i):
 | 
				
			||||||
 | 
					                    self.stat_windows[i].relocate(x, y)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def on_button_press(self, widget, event):
 | 
					    def on_button_press(self, widget, event):
 | 
				
			||||||
        if event.button == 1:
 | 
					        if event.button == 1:
 | 
				
			||||||
            self.main_window.begin_move_drag(event.button, int(event.x_root), int(event.y_root), event.time)
 | 
					            self.main_window.begin_move_drag(event.button, int(event.x_root), int(event.y_root), event.time)
 | 
				
			||||||
| 
						 | 
					@ -129,9 +150,13 @@ class Hud:
 | 
				
			||||||
        self.deleted = True
 | 
					        self.deleted = True
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def reposition_windows(self, *args):
 | 
					    def reposition_windows(self, *args):
 | 
				
			||||||
 | 
					        self.update_table_position()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def debug_stat_windows(self, *args):
 | 
				
			||||||
 | 
					        print self.table, "\n", self.main_window.window.get_transient_for()
 | 
				
			||||||
        for w in self.stat_windows:
 | 
					        for w in self.stat_windows:
 | 
				
			||||||
                self.stat_windows[w].window.move(self.stat_windows[w].x,
 | 
					            print self.stat_windows[w].window.window.get_transient_for()
 | 
				
			||||||
                                                 self.stat_windows[w].y)
 | 
					                
 | 
				
			||||||
    def save_layout(self, *args):
 | 
					    def save_layout(self, *args):
 | 
				
			||||||
        new_layout = [(0, 0)] * self.max
 | 
					        new_layout = [(0, 0)] * self.max
 | 
				
			||||||
# todo: have the hud track the poker table's window position regularly, don't forget to update table.x and table.y.        
 | 
					# todo: have the hud track the poker table's window position regularly, don't forget to update table.x and table.y.        
 | 
				
			||||||
| 
						 | 
					@ -200,8 +225,11 @@ class Hud:
 | 
				
			||||||
            aux_params = config.get_aux_parameters(game_params['aux'])
 | 
					            aux_params = config.get_aux_parameters(game_params['aux'])
 | 
				
			||||||
            self.aux_windows.append(eval("%s.%s(gtk.Window(), config, 'fpdb')" % (aux_params['module'], aux_params['class'])))
 | 
					            self.aux_windows.append(eval("%s.%s(gtk.Window(), config, 'fpdb')" % (aux_params['module'], aux_params['class'])))
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
 | 
					        gobject.timeout_add(0.5, self.update_table_position)
 | 
				
			||||||
 | 
					            
 | 
				
			||||||
    def update(self, hand, config, stat_dict):
 | 
					    def update(self, hand, config, stat_dict):
 | 
				
			||||||
        self.hand = hand   # this is the last hand, so it is available later
 | 
					        self.hand = hand   # this is the last hand, so it is available later
 | 
				
			||||||
 | 
					        self.update_table_position()
 | 
				
			||||||
        for s in stat_dict.keys():
 | 
					        for s in stat_dict.keys():
 | 
				
			||||||
            try:
 | 
					            try:
 | 
				
			||||||
                self.stat_windows[stat_dict[s]['seat']].player_id = stat_dict[s]['player_id']
 | 
					                self.stat_windows[stat_dict[s]['seat']].player_id = stat_dict[s]['player_id']
 | 
				
			||||||
| 
						 | 
					@ -246,9 +274,9 @@ class Hud:
 | 
				
			||||||
        for w in tl_windows:
 | 
					        for w in tl_windows:
 | 
				
			||||||
            if w[1] == unique_name:
 | 
					            if w[1] == unique_name:
 | 
				
			||||||
                #win32gui.ShowWindow(w[0], win32con.SW_HIDE)
 | 
					                #win32gui.ShowWindow(w[0], win32con.SW_HIDE)
 | 
				
			||||||
                window.parentgdkhandle = gtk.gdk.window_foreign_new(long(self.table.number))
 | 
					                self.main_window.parentgdkhandle = gtk.gdk.window_foreign_new(long(self.table.number))
 | 
				
			||||||
                self.main_window.gdkhandle = gtk.gdk.window_foreign_new(w[0])
 | 
					                self.main_window.gdkhandle = gtk.gdk.window_foreign_new(w[0])
 | 
				
			||||||
                self.main_window.gdkhandle.set_transient_for(window.parentgdkhandle)
 | 
					                self.main_window.gdkhandle.set_transient_for(self.main_window.parentgdkhandle)
 | 
				
			||||||
                #win32gui.ShowWindow(w[0], win32con.SW_SHOW)
 | 
					                #win32gui.ShowWindow(w[0], win32con.SW_SHOW)
 | 
				
			||||||
                
 | 
					                
 | 
				
			||||||
                style = win32gui.GetWindowLong(self.table.number, win32con.GWL_EXSTYLE)
 | 
					                style = win32gui.GetWindowLong(self.table.number, win32con.GWL_EXSTYLE)
 | 
				
			||||||
| 
						 | 
					@ -293,6 +321,7 @@ class Stat_Window:
 | 
				
			||||||
            pass
 | 
					            pass
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if event.button == 1:   # left button event
 | 
					        if event.button == 1:   # left button event
 | 
				
			||||||
 | 
					            # TODO: make position saving save sizes as well?
 | 
				
			||||||
            if event.state & gtk.gdk.SHIFT_MASK:
 | 
					            if event.state & gtk.gdk.SHIFT_MASK:
 | 
				
			||||||
                self.window.begin_resize_drag(gtk.gdk.WINDOW_EDGE_SOUTH_EAST, event.button, int(event.x_root), int(event.y_root), event.time)
 | 
					                self.window.begin_resize_drag(gtk.gdk.WINDOW_EDGE_SOUTH_EAST, event.button, int(event.x_root), int(event.y_root), event.time)
 | 
				
			||||||
            else:
 | 
					            else:
 | 
				
			||||||
| 
						 | 
					@ -372,41 +401,12 @@ class Stat_Window:
 | 
				
			||||||
                font = pango.FontDescription("Sans 7")
 | 
					                font = pango.FontDescription("Sans 7")
 | 
				
			||||||
                self.label[r][c].modify_font(font)
 | 
					                self.label[r][c].modify_font(font)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#        if not os.name == 'nt':  # seems to be a bug in opacity on windows
 | 
					 | 
				
			||||||
        self.window.set_opacity(parent.colors['hudopacity'])
 | 
					        self.window.set_opacity(parent.colors['hudopacity'])
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
#        self.window.realize()
 | 
					 | 
				
			||||||
        self.window.move(self.x, self.y)
 | 
					        self.window.move(self.x, self.y)
 | 
				
			||||||
#        self.window.show_all()
 | 
					                   
 | 
				
			||||||
#    set_keep_above(1) for windows
 | 
					 | 
				
			||||||
        if os.name == 'nt': self.topify_window(self.window)
 | 
					 | 
				
			||||||
        self.window.hide()
 | 
					        self.window.hide()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def topify_window(self, window):
 | 
					 | 
				
			||||||
        """Set the specified gtk window to stayontop in MS Windows."""
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        def windowEnumerationHandler(hwnd, resultList):
 | 
					 | 
				
			||||||
            '''Callback for win32gui.EnumWindows() to generate list of window handles.'''
 | 
					 | 
				
			||||||
            resultList.append((hwnd, win32gui.GetWindowText(hwnd)))
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        unique_name = 'unique name for finding this window'
 | 
					 | 
				
			||||||
        real_name = window.get_title()
 | 
					 | 
				
			||||||
        window.set_title(unique_name)
 | 
					 | 
				
			||||||
        tl_windows = []
 | 
					 | 
				
			||||||
        win32gui.EnumWindows(windowEnumerationHandler, tl_windows)
 | 
					 | 
				
			||||||
        
 | 
					 | 
				
			||||||
        for w in tl_windows:
 | 
					 | 
				
			||||||
            if w[1] == unique_name:
 | 
					 | 
				
			||||||
                
 | 
					 | 
				
			||||||
                #win32gui.SetWindowPos(w[0], win32con.HWND_TOPMOST, 0, 0, 0, 0, win32con.SWP_NOMOVE|win32con.SWP_NOSIZE) 
 | 
					 | 
				
			||||||
                
 | 
					 | 
				
			||||||
#                style = win32gui.GetWindowLong(w[0], win32con.GWL_EXSTYLE)
 | 
					 | 
				
			||||||
#                style |= win32con.WS_EX_TOOLWINDOW
 | 
					 | 
				
			||||||
#                style &= ~win32con.WS_EX_APPWINDOW
 | 
					 | 
				
			||||||
#                win32gui.SetWindowLong(w[0], win32con.GWL_EXSTYLE, style)
 | 
					 | 
				
			||||||
                win32gui.ShowWindow(w[0], win32con.SW_SHOW)
 | 
					 | 
				
			||||||
                window.set_title(real_name)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
def destroy(*args):             # call back for terminating the main eventloop
 | 
					def destroy(*args):             # call back for terminating the main eventloop
 | 
				
			||||||
    gtk.main_quit()
 | 
					    gtk.main_quit()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										1
									
								
								pyfpdb/Mucked.py
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						
									
										1
									
								
								pyfpdb/Mucked.py
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							| 
						 | 
					@ -170,6 +170,7 @@ class Stud_cards:
 | 
				
			||||||
        for r in range(0, self.rows):
 | 
					        for r in range(0, self.rows):
 | 
				
			||||||
            self.grid_contents[( 0, r)] = gtk.Label("%d" % (r + 1))
 | 
					            self.grid_contents[( 0, r)] = gtk.Label("%d" % (r + 1))
 | 
				
			||||||
            self.grid_contents[( 1, r)] = gtk.Label("player %d" % (r + 1))
 | 
					            self.grid_contents[( 1, r)] = gtk.Label("player %d" % (r + 1))
 | 
				
			||||||
 | 
					            self.grid_contents[( 1, r)].set_property("width-chars", 12)
 | 
				
			||||||
            self.grid_contents[( 4, r)] = gtk.Label("-")
 | 
					            self.grid_contents[( 4, r)] = gtk.Label("-")
 | 
				
			||||||
            self.grid_contents[( 9, r)] = gtk.Label("-")
 | 
					            self.grid_contents[( 9, r)] = gtk.Label("-")
 | 
				
			||||||
            self.grid_contents[( 2, r)] = self.eb[( 0, r)]
 | 
					            self.grid_contents[( 2, r)] = self.eb[( 0, r)]
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -229,12 +229,11 @@ class Sql:
 | 
				
			||||||
                        sum(street3CheckCallRaiseDone)   AS ccr_3,
 | 
					                        sum(street3CheckCallRaiseDone)   AS ccr_3,
 | 
				
			||||||
                        sum(street4CheckCallRaiseChance) AS ccr_opp_4,
 | 
					                        sum(street4CheckCallRaiseChance) AS ccr_opp_4,
 | 
				
			||||||
                        sum(street4CheckCallRaiseDone)   AS ccr_4
 | 
					                        sum(street4CheckCallRaiseDone)   AS ccr_4
 | 
				
			||||||
                    FROM HudCache, Hands
 | 
					                    FROM Hands
 | 
				
			||||||
                    WHERE HudCache.PlayerId in 
 | 
					                         INNER JOIN HandsPlayers ON (HandsPlayers.handId = %s)
 | 
				
			||||||
                        (SELECT PlayerId FROM HandsPlayers 
 | 
					                         INNER JOIN HudCache ON (    HudCache.PlayerId = HandsPlayers.PlayerId+0
 | 
				
			||||||
                        WHERE handId = %s)
 | 
					                                                 AND HudCache.gametypeId+0 = Hands.gametypeId+0)
 | 
				
			||||||
                    AND   Hands.id = %s
 | 
					                    WHERE Hands.id = %s
 | 
				
			||||||
                    AND   Hands.gametypeId = HudCache.gametypeId
 | 
					 | 
				
			||||||
                    GROUP BY HudCache.PlayerId
 | 
					                    GROUP BY HudCache.PlayerId
 | 
				
			||||||
                """
 | 
					                """
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										130
									
								
								pyfpdb/Stats.py
									
									
									
									
									
								
							
							
						
						
									
										130
									
								
								pyfpdb/Stats.py
									
									
									
									
									
								
							| 
						 | 
					@ -71,6 +71,7 @@ def do_stat(stat_dict, player = 24, stat = 'vpip'):
 | 
				
			||||||
#    functions that return individual stats
 | 
					#    functions that return individual stats
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def playername(stat_dict, player):
 | 
					def playername(stat_dict, player):
 | 
				
			||||||
 | 
					    """    Player Name."""
 | 
				
			||||||
    return (stat_dict[player]['screen_name'],
 | 
					    return (stat_dict[player]['screen_name'],
 | 
				
			||||||
            stat_dict[player]['screen_name'],
 | 
					            stat_dict[player]['screen_name'],
 | 
				
			||||||
            stat_dict[player]['screen_name'],
 | 
					            stat_dict[player]['screen_name'],
 | 
				
			||||||
| 
						 | 
					@ -98,6 +99,26 @@ def vpip(stat_dict, player):
 | 
				
			||||||
                    'Voluntarily Put In Pot %'
 | 
					                    'Voluntarily Put In Pot %'
 | 
				
			||||||
                    )
 | 
					                    )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def vpip_0(stat_dict, player):
 | 
				
			||||||
 | 
					    """    Voluntarily put $ in the pot (no decimals)."""
 | 
				
			||||||
 | 
					    stat = 0.0
 | 
				
			||||||
 | 
					    try:
 | 
				
			||||||
 | 
					        stat = float(stat_dict[player]['vpip'])/float(stat_dict[player]['n'])
 | 
				
			||||||
 | 
					        return (stat, 
 | 
				
			||||||
 | 
					                '%2.0f'      % (100*stat) + '%', 
 | 
				
			||||||
 | 
					                'v=%2.0f'    % (100*stat) + '%', 
 | 
				
			||||||
 | 
					                'vpip=%2.0f' % (100*stat) + '%', 
 | 
				
			||||||
 | 
					                '(%d/%d)'    % (stat_dict[player]['vpip'], stat_dict[player]['n']),
 | 
				
			||||||
 | 
					                'vpip'
 | 
				
			||||||
 | 
					                )
 | 
				
			||||||
 | 
					    except: return (stat, 
 | 
				
			||||||
 | 
					                    '%2.0f'      % (0) + '%', 
 | 
				
			||||||
 | 
					                    'w=%2.0f'    % (0) + '%', 
 | 
				
			||||||
 | 
					                    'wtsd=%2.0f' % (0) + '%', 
 | 
				
			||||||
 | 
					                    '(%d/%d)'    % (0, 0),
 | 
				
			||||||
 | 
					                    'wtsd'
 | 
				
			||||||
 | 
					                    )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def pfr(stat_dict, player):
 | 
					def pfr(stat_dict, player):
 | 
				
			||||||
    """    Preflop (3rd street) raise."""
 | 
					    """    Preflop (3rd street) raise."""
 | 
				
			||||||
    stat = 0.0
 | 
					    stat = 0.0
 | 
				
			||||||
| 
						 | 
					@ -119,6 +140,27 @@ def pfr(stat_dict, player):
 | 
				
			||||||
                'Pre-Flop Raise %'
 | 
					                'Pre-Flop Raise %'
 | 
				
			||||||
                )
 | 
					                )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def pfr_0(stat_dict, player):
 | 
				
			||||||
 | 
					    """    Preflop (3rd street) raise (no decimals)."""
 | 
				
			||||||
 | 
					    stat = 0.0
 | 
				
			||||||
 | 
					    try:
 | 
				
			||||||
 | 
					        stat = float(stat_dict[player]['pfr'])/float(stat_dict[player]['n'])
 | 
				
			||||||
 | 
					        return (stat, 
 | 
				
			||||||
 | 
					                '%2.0f'      % (100*stat) + '%', 
 | 
				
			||||||
 | 
					                'p=%2.0f'    % (100*stat) + '%', 
 | 
				
			||||||
 | 
					                'pfr=%2.0f'  % (100*stat) + '%', 
 | 
				
			||||||
 | 
					                '(%d/%d)'    % (stat_dict[player]['pfr'], stat_dict[player]['n']),
 | 
				
			||||||
 | 
					                'pfr'
 | 
				
			||||||
 | 
					                )
 | 
				
			||||||
 | 
					    except: 
 | 
				
			||||||
 | 
					        return (stat, 
 | 
				
			||||||
 | 
					                '%2.0f'      % (0) + '%', 
 | 
				
			||||||
 | 
					                'p=%2.0f'    % (0) + '%', 
 | 
				
			||||||
 | 
					                'pfr=%2.0f' % (0) + '%', 
 | 
				
			||||||
 | 
					                '(%d/%d)'    % (0, 0),
 | 
				
			||||||
 | 
					                'pfr'
 | 
				
			||||||
 | 
					                )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def wtsd(stat_dict, player):
 | 
					def wtsd(stat_dict, player):
 | 
				
			||||||
    """    Went to SD when saw flop/4th."""
 | 
					    """    Went to SD when saw flop/4th."""
 | 
				
			||||||
    stat = 0.0
 | 
					    stat = 0.0
 | 
				
			||||||
| 
						 | 
					@ -149,7 +191,7 @@ def wmsd(stat_dict, player):
 | 
				
			||||||
                '%3.1f'      % (100*stat) + '%', 
 | 
					                '%3.1f'      % (100*stat) + '%', 
 | 
				
			||||||
                'w=%3.1f'    % (100*stat) + '%', 
 | 
					                'w=%3.1f'    % (100*stat) + '%', 
 | 
				
			||||||
                'wmsd=%3.1f' % (100*stat) + '%', 
 | 
					                'wmsd=%3.1f' % (100*stat) + '%', 
 | 
				
			||||||
                '(%f5.0/%d)'    % (stat_dict[player]['wmsd'], stat_dict[player]['sd']),
 | 
					                '(%5.1f/%d)'    % (float(stat_dict[player]['wmsd']), stat_dict[player]['sd']),
 | 
				
			||||||
                '% won money at showdown'
 | 
					                '% won money at showdown'
 | 
				
			||||||
                )
 | 
					                )
 | 
				
			||||||
    except:
 | 
					    except:
 | 
				
			||||||
| 
						 | 
					@ -261,12 +303,11 @@ def f_SB_steal(stat_dict, player):
 | 
				
			||||||
                )
 | 
					                )
 | 
				
			||||||
    except:
 | 
					    except:
 | 
				
			||||||
        return (stat,
 | 
					        return (stat,
 | 
				
			||||||
                '%3.1f'        % (0) + '%', 
 | 
					                'NA',
 | 
				
			||||||
                'fSB=%3.1f'     % (0) + '%', 
 | 
					                'fSB=NA',
 | 
				
			||||||
                'fSB_s=%3.1f' % (0) + '%', 
 | 
					                'fSB_s=NA',
 | 
				
			||||||
                '(%d/%d)'      % (0, 0),
 | 
					                '0/0',
 | 
				
			||||||
                '% folded SB to steal'
 | 
					                '% folded SB to steal')
 | 
				
			||||||
                )
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
def f_BB_steal(stat_dict, player):
 | 
					def f_BB_steal(stat_dict, player):
 | 
				
			||||||
    """    Folded BB to steal."""
 | 
					    """    Folded BB to steal."""
 | 
				
			||||||
| 
						 | 
					@ -282,12 +323,11 @@ def f_BB_steal(stat_dict, player):
 | 
				
			||||||
                )
 | 
					                )
 | 
				
			||||||
    except:
 | 
					    except:
 | 
				
			||||||
        return (stat,
 | 
					        return (stat,
 | 
				
			||||||
                '%3.1f'        % (0) + '%', 
 | 
					                'NA',
 | 
				
			||||||
                'fBB=%3.1f'     % (0) + '%', 
 | 
					                'fBB=NA',
 | 
				
			||||||
                'fBB_s=%3.1f' % (0) + '%', 
 | 
					                'fBB_s=NA',
 | 
				
			||||||
                '(%d/%d)'      % (0, 0),
 | 
					                '0/0',
 | 
				
			||||||
                '% folded BB to steal'
 | 
					                '% folded BB to steal')
 | 
				
			||||||
                )
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
def three_B_0(stat_dict, player):
 | 
					def three_B_0(stat_dict, player):
 | 
				
			||||||
    """    Three bet preflop/3rd."""
 | 
					    """    Three bet preflop/3rd."""
 | 
				
			||||||
| 
						 | 
					@ -415,6 +455,61 @@ def a_freq_4(stat_dict, player):
 | 
				
			||||||
                'Aggression Freq 7th'
 | 
					                'Aggression Freq 7th'
 | 
				
			||||||
                )
 | 
					                )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def a_freq_123(stat_dict, player):
 | 
				
			||||||
 | 
					    """    Post-Flop aggression frequency."""
 | 
				
			||||||
 | 
					    stat = 0.0
 | 
				
			||||||
 | 
					    try:
 | 
				
			||||||
 | 
					        stat = float(  stat_dict[player]['aggr_1'] + stat_dict[player]['aggr_2'] + stat_dict[player]['aggr_3']
 | 
				
			||||||
 | 
					                    ) / float(  stat_dict[player]['saw_1'] + stat_dict[player]['saw_2'] + stat_dict[player]['saw_3']);
 | 
				
			||||||
 | 
					        return (stat,
 | 
				
			||||||
 | 
					                '%3.1f'             % (100*stat) + '%', 
 | 
				
			||||||
 | 
					                'afq=%3.1f'         % (100*stat) + '%', 
 | 
				
			||||||
 | 
					                'postf_aggfq=%3.1f' % (100*stat) + '%', 
 | 
				
			||||||
 | 
					                '(%d/%d)'           % (  stat_dict[player]['aggr_1']
 | 
				
			||||||
 | 
					                                       + stat_dict[player]['aggr_2']
 | 
				
			||||||
 | 
					                                       + stat_dict[player]['aggr_3']
 | 
				
			||||||
 | 
					                                      ,  stat_dict[player]['saw_1']
 | 
				
			||||||
 | 
					                                       + stat_dict[player]['saw_2']
 | 
				
			||||||
 | 
					                                       + stat_dict[player]['saw_3']
 | 
				
			||||||
 | 
					                                      ),
 | 
				
			||||||
 | 
					                'Post-Flop Aggression Freq'
 | 
				
			||||||
 | 
					                )
 | 
				
			||||||
 | 
					    except:
 | 
				
			||||||
 | 
					        return (stat,
 | 
				
			||||||
 | 
					                '%2.0f'        % (0) + '%', 
 | 
				
			||||||
 | 
					                'a3=%2.0f'     % (0) + '%', 
 | 
				
			||||||
 | 
					                'a_fq_3=%2.0f' % (0) + '%', 
 | 
				
			||||||
 | 
					                '(%d/%d)'      % (0, 0),
 | 
				
			||||||
 | 
					                'Post-Flop Aggression Freq'
 | 
				
			||||||
 | 
					                )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def a_freq_123_0(stat_dict, player):
 | 
				
			||||||
 | 
					    """    Post-Flop aggression frequency (no decimals)."""
 | 
				
			||||||
 | 
					    stat = 0.0
 | 
				
			||||||
 | 
					    try:
 | 
				
			||||||
 | 
					        stat = float(  stat_dict[player]['aggr_1'] + stat_dict[player]['aggr_2'] + stat_dict[player]['aggr_3']) / float(  stat_dict[player]['saw_1'] + stat_dict[player]['saw_2'] + stat_dict[player]['saw_3']);
 | 
				
			||||||
 | 
					        return (stat,
 | 
				
			||||||
 | 
					                '%2.0f'             % (100*stat) + '%', 
 | 
				
			||||||
 | 
					                'afq=%2.0f'         % (100*stat) + '%', 
 | 
				
			||||||
 | 
					                'postf_aggfq=%2.0f' % (100*stat) + '%', 
 | 
				
			||||||
 | 
					                '(%d/%d)'           % (  stat_dict[player]['aggr_1']
 | 
				
			||||||
 | 
					                                       + stat_dict[player]['aggr_2']
 | 
				
			||||||
 | 
					                                       + stat_dict[player]['aggr_3']
 | 
				
			||||||
 | 
					                                      ,  stat_dict[player]['saw_1']
 | 
				
			||||||
 | 
					                                       + stat_dict[player]['saw_2']
 | 
				
			||||||
 | 
					                                       + stat_dict[player]['saw_3']
 | 
				
			||||||
 | 
					                                      ),
 | 
				
			||||||
 | 
					                'Post-Flop Aggression Freq'
 | 
				
			||||||
 | 
					                )
 | 
				
			||||||
 | 
					    except:
 | 
				
			||||||
 | 
					        return (stat,
 | 
				
			||||||
 | 
					                '%2.0f'        % (0) + '%', 
 | 
				
			||||||
 | 
					                'a3=%2.0f'     % (0) + '%', 
 | 
				
			||||||
 | 
					                'a_fq_3=%2.0f' % (0) + '%', 
 | 
				
			||||||
 | 
					                '(%d/%d)'      % (0, 0),
 | 
				
			||||||
 | 
					                'Post-Flop Aggression Freq'
 | 
				
			||||||
 | 
					                )
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
def cb_1(stat_dict, player):
 | 
					def cb_1(stat_dict, player):
 | 
				
			||||||
    """    Flop continuation bet."""
 | 
					    """    Flop continuation bet."""
 | 
				
			||||||
    stat = 0.0
 | 
					    stat = 0.0
 | 
				
			||||||
| 
						 | 
					@ -591,7 +686,9 @@ if __name__== "__main__":
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    for player in stat_dict.keys():
 | 
					    for player in stat_dict.keys():
 | 
				
			||||||
        print "player = ", player, do_stat(stat_dict, player = player, stat = 'vpip') 
 | 
					        print "player = ", player, do_stat(stat_dict, player = player, stat = 'vpip') 
 | 
				
			||||||
 | 
					        print "player = ", player, do_stat(stat_dict, player = player, stat = 'vpip_0') 
 | 
				
			||||||
        print "player = ", player, do_stat(stat_dict, player = player, stat = 'pfr') 
 | 
					        print "player = ", player, do_stat(stat_dict, player = player, stat = 'pfr') 
 | 
				
			||||||
 | 
					        print "player = ", player, do_stat(stat_dict, player = player, stat = 'pfr_0') 
 | 
				
			||||||
        print "player = ", player, do_stat(stat_dict, player = player, stat = 'wtsd') 
 | 
					        print "player = ", player, do_stat(stat_dict, player = player, stat = 'wtsd') 
 | 
				
			||||||
        print "player = ", player, do_stat(stat_dict, player = player, stat = 'saw_f') 
 | 
					        print "player = ", player, do_stat(stat_dict, player = player, stat = 'saw_f') 
 | 
				
			||||||
        print "player = ", player, do_stat(stat_dict, player = player, stat = 'n') 
 | 
					        print "player = ", player, do_stat(stat_dict, player = player, stat = 'n') 
 | 
				
			||||||
| 
						 | 
					@ -606,6 +703,8 @@ if __name__== "__main__":
 | 
				
			||||||
        print "player = ", player, do_stat(stat_dict, player = player, stat = 'a_freq_2') 
 | 
					        print "player = ", player, do_stat(stat_dict, player = player, stat = 'a_freq_2') 
 | 
				
			||||||
        print "player = ", player, do_stat(stat_dict, player = player, stat = 'a_freq_3') 
 | 
					        print "player = ", player, do_stat(stat_dict, player = player, stat = 'a_freq_3') 
 | 
				
			||||||
        print "player = ", player, do_stat(stat_dict, player = player, stat = 'a_freq_4') 
 | 
					        print "player = ", player, do_stat(stat_dict, player = player, stat = 'a_freq_4') 
 | 
				
			||||||
 | 
					        print "player = ", player, do_stat(stat_dict, player = player, stat = 'a_freq_123') 
 | 
				
			||||||
 | 
					        print "player = ", player, do_stat(stat_dict, player = player, stat = 'a_freq_123_0') 
 | 
				
			||||||
        print "player = ", player, do_stat(stat_dict, player = player, stat = 'cb_1') 
 | 
					        print "player = ", player, do_stat(stat_dict, player = player, stat = 'cb_1') 
 | 
				
			||||||
        print "player = ", player, do_stat(stat_dict, player = player, stat = 'cb_2') 
 | 
					        print "player = ", player, do_stat(stat_dict, player = player, stat = 'cb_2') 
 | 
				
			||||||
        print "player = ", player, do_stat(stat_dict, player = player, stat = 'cb_3') 
 | 
					        print "player = ", player, do_stat(stat_dict, player = player, stat = 'cb_3') 
 | 
				
			||||||
| 
						 | 
					@ -614,6 +713,7 @@ if __name__== "__main__":
 | 
				
			||||||
        print "player = ", player, do_stat(stat_dict, player = player, stat = 'ffreq_2') 
 | 
					        print "player = ", player, do_stat(stat_dict, player = player, stat = 'ffreq_2') 
 | 
				
			||||||
        print "player = ", player, do_stat(stat_dict, player = player, stat = 'ffreq_3') 
 | 
					        print "player = ", player, do_stat(stat_dict, player = player, stat = 'ffreq_3') 
 | 
				
			||||||
        print "player = ", player, do_stat(stat_dict, player = player, stat = 'ffreq_4')
 | 
					        print "player = ", player, do_stat(stat_dict, player = player, stat = 'ffreq_4')
 | 
				
			||||||
 | 
					        print "\n" 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    print "\n\nLegal stats:"
 | 
					    print "\n\nLegal stats:"
 | 
				
			||||||
    for attr in dir():
 | 
					    for attr in dir():
 | 
				
			||||||
| 
						 | 
					@ -621,8 +721,8 @@ if __name__== "__main__":
 | 
				
			||||||
        if attr in ("Configuration", "Database", "GInitiallyUnowned", "gtk", "pygtk",
 | 
					        if attr in ("Configuration", "Database", "GInitiallyUnowned", "gtk", "pygtk",
 | 
				
			||||||
                    "player", "c", "db_connection", "do_stat", "do_tip", "stat_dict",
 | 
					                    "player", "c", "db_connection", "do_stat", "do_tip", "stat_dict",
 | 
				
			||||||
                    "h"): continue
 | 
					                    "h"): continue
 | 
				
			||||||
        print attr, eval("%s.__doc__" % (attr))
 | 
					        print "%-14s %s" % (attr, eval("%s.__doc__" % (attr)))
 | 
				
			||||||
#        print "            <pu_stat pu_stat_name = \"%s\"> </pu_stat>" % (attr)
 | 
					#        print "            <pu_stat pu_stat_name = \"%s\"> </pu_stat>" % (attr)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    db_connection.close
 | 
					    db_connection.close_connection
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -248,7 +248,9 @@ def get_nt_exe(hwnd):
 | 
				
			||||||
    """Finds the name of the executable that the given window handle belongs to."""
 | 
					    """Finds the name of the executable that the given window handle belongs to."""
 | 
				
			||||||
    processid = win32process.GetWindowThreadProcessId(hwnd)
 | 
					    processid = win32process.GetWindowThreadProcessId(hwnd)
 | 
				
			||||||
    pshandle = win32api.OpenProcess(win32con.PROCESS_QUERY_INFORMATION | win32con.PROCESS_VM_READ, False, processid[1])
 | 
					    pshandle = win32api.OpenProcess(win32con.PROCESS_QUERY_INFORMATION | win32con.PROCESS_VM_READ, False, processid[1])
 | 
				
			||||||
    return win32process.GetModuleFileNameEx(pshandle, 0)
 | 
					    exename = win32process.GetModuleFileNameEx(pshandle, 0)
 | 
				
			||||||
 | 
					    win32api.CloseHandle(pshandle)
 | 
				
			||||||
 | 
					    return exename
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def decode_windows(c, title, hwnd):
 | 
					def decode_windows(c, title, hwnd):
 | 
				
			||||||
    """Gets window parameters from the window title and handle--Windows."""
 | 
					    """Gets window parameters from the window title and handle--Windows."""
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -118,12 +118,12 @@ class fpdb:
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	def dia_create_del_database(self, widget, data):
 | 
						def dia_create_del_database(self, widget, data):
 | 
				
			||||||
		print "todo: implement dia_create_del_database"
 | 
							print "todo: implement dia_create_del_database"
 | 
				
			||||||
		obtain_global_lock()
 | 
							self.obtain_global_lock()
 | 
				
			||||||
	#end def dia_create_del_database
 | 
						#end def dia_create_del_database
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	def dia_create_del_user(self, widget, data):
 | 
						def dia_create_del_user(self, widget, data):
 | 
				
			||||||
		print "todo: implement dia_create_del_user"
 | 
							print "todo: implement dia_create_del_user"
 | 
				
			||||||
		obtain_global_lock()
 | 
							self.obtain_global_lock()
 | 
				
			||||||
	#end def dia_create_del_user
 | 
						#end def dia_create_del_user
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	def dia_database_stats(self, widget, data):
 | 
						def dia_database_stats(self, widget, data):
 | 
				
			||||||
| 
						 | 
					@ -133,17 +133,17 @@ class fpdb:
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	def dia_delete_db_parts(self, widget, data):
 | 
						def dia_delete_db_parts(self, widget, data):
 | 
				
			||||||
		print "todo: implement dia_delete_db_parts"
 | 
							print "todo: implement dia_delete_db_parts"
 | 
				
			||||||
		obtain_global_lock()
 | 
							self.obtain_global_lock()
 | 
				
			||||||
	#end def dia_delete_db_parts
 | 
						#end def dia_delete_db_parts
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	def dia_edit_profile(self, widget=None, data=None, create_default=False, path=None):
 | 
						def dia_edit_profile(self, widget=None, data=None, create_default=False, path=None):
 | 
				
			||||||
		print "todo: implement dia_edit_profile"
 | 
							print "todo: implement dia_edit_profile"
 | 
				
			||||||
		obtain_global_lock()
 | 
							self.obtain_global_lock()
 | 
				
			||||||
	#end def dia_edit_profile
 | 
						#end def dia_edit_profile
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	def dia_export_db(self, widget, data):
 | 
						def dia_export_db(self, widget, data):
 | 
				
			||||||
		print "todo: implement dia_export_db"
 | 
							print "todo: implement dia_export_db"
 | 
				
			||||||
		obtain_global_lock()
 | 
							self.obtain_global_lock()
 | 
				
			||||||
	#end def dia_export_db
 | 
						#end def dia_export_db
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	def dia_get_db_root_credentials(self):
 | 
						def dia_get_db_root_credentials(self):
 | 
				
			||||||
| 
						 | 
					@ -168,7 +168,7 @@ class fpdb:
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	def dia_import_db(self, widget, data):
 | 
						def dia_import_db(self, widget, data):
 | 
				
			||||||
		print "todo: implement dia_import_db"
 | 
							print "todo: implement dia_import_db"
 | 
				
			||||||
		obtain_global_lock()
 | 
							self.obtain_global_lock()
 | 
				
			||||||
	#end def dia_import_db
 | 
						#end def dia_import_db
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	def dia_licensing(self, widget, data):
 | 
						def dia_licensing(self, widget, data):
 | 
				
			||||||
| 
						 | 
					@ -264,7 +264,11 @@ class fpdb:
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
		self.db = fpdb_db.fpdb_db()
 | 
							self.db = fpdb_db.fpdb_db()
 | 
				
			||||||
		#print "end of fpdb.load_profile, databaseName:",self.settings['db-databaseName']
 | 
							#print "end of fpdb.load_profile, databaseName:",self.settings['db-databaseName']
 | 
				
			||||||
		self.db.connect(self.settings['db-backend'], self.settings['db-host'], self.settings['db-databaseName'], self.settings['db-user'], self.settings['db-password'])
 | 
							self.db.connect(self.settings['db-backend'],
 | 
				
			||||||
 | 
					            self.settings['db-host'],
 | 
				
			||||||
 | 
					            self.settings['db-databaseName'],
 | 
				
			||||||
 | 
					            self.settings['db-user'], 
 | 
				
			||||||
 | 
					            self.settings['db-password'])
 | 
				
			||||||
		if self.db.wrongDbVersion:
 | 
							if self.db.wrongDbVersion:
 | 
				
			||||||
			diaDbVersionWarning = gtk.Dialog(title="Strong Warning - Invalid database version", parent=None, flags=0, buttons=(gtk.STOCK_OK,gtk.RESPONSE_OK))
 | 
								diaDbVersionWarning = gtk.Dialog(title="Strong Warning - Invalid database version", parent=None, flags=0, buttons=(gtk.STOCK_OK,gtk.RESPONSE_OK))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										21
									
								
								pyfpdb/fpdb_db.py
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
						
						
									
										21
									
								
								pyfpdb/fpdb_db.py
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							| 
						 | 
					@ -31,19 +31,34 @@ class fpdb_db:
 | 
				
			||||||
        self.SQLITE=4
 | 
					        self.SQLITE=4
 | 
				
			||||||
    #end def __init__
 | 
					    #end def __init__
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
	def connect(self, backend, host, database, user, password):
 | 
					    def connect(self, backend=None, host=None, database=None,
 | 
				
			||||||
 | 
					                user=None, password=None):
 | 
				
			||||||
        """Connects a database with the given parameters"""
 | 
					        """Connects a database with the given parameters"""
 | 
				
			||||||
 | 
					        if backend is None:
 | 
				
			||||||
 | 
					            raise FpdbError('Database backend not defined')
 | 
				
			||||||
        self.backend=backend
 | 
					        self.backend=backend
 | 
				
			||||||
        self.host=host
 | 
					        self.host=host
 | 
				
			||||||
		self.database=database
 | 
					 | 
				
			||||||
        self.user=user
 | 
					        self.user=user
 | 
				
			||||||
        self.password=password
 | 
					        self.password=password
 | 
				
			||||||
 | 
					        self.database=database
 | 
				
			||||||
        if backend==self.MYSQL_INNODB:
 | 
					        if backend==self.MYSQL_INNODB:
 | 
				
			||||||
            import MySQLdb
 | 
					            import MySQLdb
 | 
				
			||||||
            self.db=MySQLdb.connect(host = host, user = user, passwd = password, db = database)
 | 
					            self.db=MySQLdb.connect(host = host, user = user, passwd = password, db = database)
 | 
				
			||||||
        elif backend==self.PGSQL:
 | 
					        elif backend==self.PGSQL:
 | 
				
			||||||
            import psycopg2
 | 
					            import psycopg2
 | 
				
			||||||
			self.db = psycopg2.connect(host = host, user = user, password = password, database = database)
 | 
					            # If DB connection is made over TCP, then the variables
 | 
				
			||||||
 | 
					            # host, user and password are required
 | 
				
			||||||
 | 
					            print "host=%s user=%s pass=%s." % (host, user, password)
 | 
				
			||||||
 | 
					            if self.host and self.user and self.password:
 | 
				
			||||||
 | 
					                self.db = psycopg2.connect(host = host,
 | 
				
			||||||
 | 
					                        user = user, 
 | 
				
			||||||
 | 
					                        password = password, 
 | 
				
			||||||
 | 
					                        database = database)
 | 
				
			||||||
 | 
					            # For local domain-socket connections, only DB name is
 | 
				
			||||||
 | 
					            # needed, and everything else is in fact undefined and/or
 | 
				
			||||||
 | 
					            # flat out wrong
 | 
				
			||||||
 | 
					            else:
 | 
				
			||||||
 | 
					                self.db = psycopg2.connect(database = database)
 | 
				
			||||||
        else:
 | 
					        else:
 | 
				
			||||||
            raise fpdb_simple.FpdbError("unrecognised database backend:"+backend)
 | 
					            raise fpdb_simple.FpdbError("unrecognised database backend:"+backend)
 | 
				
			||||||
        self.cursor=self.db.cursor()
 | 
					        self.cursor=self.db.cursor()
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										10
									
								
								pyfpdb/fpdb_import.py
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
						
						
									
										10
									
								
								pyfpdb/fpdb_import.py
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							| 
						 | 
					@ -62,6 +62,8 @@ class Importer:
 | 
				
			||||||
            self.settings['minPrint'] = 30
 | 
					            self.settings['minPrint'] = 30
 | 
				
			||||||
        self.dbConnect()
 | 
					        self.dbConnect()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # XXX: Why is this here, when fpdb_db.connect() already does the
 | 
				
			||||||
 | 
					    # same?
 | 
				
			||||||
    def dbConnect(self):
 | 
					    def dbConnect(self):
 | 
				
			||||||
        #connect to DB
 | 
					        #connect to DB
 | 
				
			||||||
        if self.settings['db-backend'] == 2:
 | 
					        if self.settings['db-backend'] == 2:
 | 
				
			||||||
| 
						 | 
					@ -73,10 +75,15 @@ class Importer:
 | 
				
			||||||
            if not pgsqlLibFound:
 | 
					            if not pgsqlLibFound:
 | 
				
			||||||
                raise fpdb_simple.FpdbError("interface library psycopg2 not found but PostgreSQL selected as backend - please install the library or change the config file")
 | 
					                raise fpdb_simple.FpdbError("interface library psycopg2 not found but PostgreSQL selected as backend - please install the library or change the config file")
 | 
				
			||||||
            print self.settings
 | 
					            print self.settings
 | 
				
			||||||
 | 
					            if self.settings.has_key('db-host') and \
 | 
				
			||||||
 | 
					                        self.settings.has_key('db-user'):
 | 
				
			||||||
                self.db = psycopg2.connect(host = self.settings['db-host'],
 | 
					                self.db = psycopg2.connect(host = self.settings['db-host'],
 | 
				
			||||||
                                       user = self.settings['db-user'],
 | 
					                                       user = self.settings['db-user'],
 | 
				
			||||||
                                       password = self.settings['db-password'],
 | 
					                                       password = self.settings['db-password'],
 | 
				
			||||||
                                       database = self.settings['db-databaseName'])
 | 
					                                       database = self.settings['db-databaseName'])
 | 
				
			||||||
 | 
					            else:
 | 
				
			||||||
 | 
					                dbname = self.settings['db-databaseName']
 | 
				
			||||||
 | 
					                self.db = psycopg2.connect(database = dbname)
 | 
				
			||||||
        elif self.settings['db-backend'] == 4:
 | 
					        elif self.settings['db-backend'] == 4:
 | 
				
			||||||
            pass
 | 
					            pass
 | 
				
			||||||
        else:
 | 
					        else:
 | 
				
			||||||
| 
						 | 
					@ -236,7 +243,8 @@ class Importer:
 | 
				
			||||||
                    self.hand=hand
 | 
					                    self.hand=hand
 | 
				
			||||||
                    
 | 
					                    
 | 
				
			||||||
                    try:
 | 
					                    try:
 | 
				
			||||||
						handsId=fpdb_parse_logic.mainParser(self.db, self.cursor, site, category, hand)
 | 
					                        handsId=fpdb_parse_logic.mainParser(self.settings['db-backend'], self.db
 | 
				
			||||||
 | 
					                                                           ,self.cursor, site, category, hand)
 | 
				
			||||||
                        self.db.commit()
 | 
					                        self.db.commit()
 | 
				
			||||||
                        
 | 
					                        
 | 
				
			||||||
                        stored+=1
 | 
					                        stored+=1
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -21,7 +21,7 @@ import fpdb_simple
 | 
				
			||||||
import fpdb_save_to_db
 | 
					import fpdb_save_to_db
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#parses a holdem hand
 | 
					#parses a holdem hand
 | 
				
			||||||
def mainParser(db, cursor, site, category, hand):
 | 
					def mainParser(backend, db, cursor, site, category, hand):
 | 
				
			||||||
    if (category=="holdem" or category=="omahahi" or category=="omahahilo"):
 | 
					    if (category=="holdem" or category=="omahahi" or category=="omahahilo"):
 | 
				
			||||||
        base="hold"
 | 
					        base="hold"
 | 
				
			||||||
    else:
 | 
					    else:
 | 
				
			||||||
| 
						 | 
					@ -48,7 +48,7 @@ def mainParser(db, cursor, site, category, hand):
 | 
				
			||||||
            #print "found small blind line:",smallBlindLine
 | 
					            #print "found small blind line:",smallBlindLine
 | 
				
			||||||
            break
 | 
					            break
 | 
				
			||||||
    #print "small blind line:",smallBlindLine
 | 
					    #print "small blind line:",smallBlindLine
 | 
				
			||||||
	gametypeID=fpdb_simple.recogniseGametypeID(cursor, hand[0], hand[smallBlindLine], siteID, category, isTourney)
 | 
					    gametypeID=fpdb_simple.recogniseGametypeID(backend, db, cursor, hand[0], hand[smallBlindLine], siteID, category, isTourney)
 | 
				
			||||||
    if isTourney:
 | 
					    if isTourney:
 | 
				
			||||||
        if site!="ps":
 | 
					        if site!="ps":
 | 
				
			||||||
            raise fpdb_simple.FpdbError("tourneys are only supported on PS right now")
 | 
					            raise fpdb_simple.FpdbError("tourneys are only supported on PS right now")
 | 
				
			||||||
| 
						 | 
					@ -133,9 +133,13 @@ def mainParser(db, cursor, site, category, hand):
 | 
				
			||||||
        totalWinnings+=winnings[i]
 | 
					        totalWinnings+=winnings[i]
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    if base=="hold":
 | 
					    if base=="hold":
 | 
				
			||||||
		hudImportData=fpdb_simple.generateHudCacheData(playerIDs, base, category, actionTypes, allIns, actionTypeByNo, winnings, totalWinnings, positions)
 | 
					        hudImportData=fpdb_simple.generateHudCacheData(playerIDs, base, category, actionTypes
 | 
				
			||||||
 | 
					                                     , allIns, actionTypeByNo, winnings, totalWinnings, positions
 | 
				
			||||||
 | 
					                                     , actionTypes, actionAmounts)
 | 
				
			||||||
    else:
 | 
					    else:
 | 
				
			||||||
		hudImportData=fpdb_simple.generateHudCacheData(playerIDs, base, category, actionTypes, allIns, actionTypeByNo, winnings, totalWinnings, None)
 | 
					        hudImportData=fpdb_simple.generateHudCacheData(playerIDs, base, category, actionTypes
 | 
				
			||||||
 | 
					                                     , allIns, actionTypeByNo, winnings, totalWinnings, None
 | 
				
			||||||
 | 
					                                     , actionTypes, actionAmounts)
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    if isTourney:
 | 
					    if isTourney:
 | 
				
			||||||
        ranks=[]
 | 
					        ranks=[]
 | 
				
			||||||
| 
						 | 
					@ -144,20 +148,41 @@ def mainParser(db, cursor, site, category, hand):
 | 
				
			||||||
        payin_amounts=fpdb_simple.calcPayin(len(names), buyin, fee)
 | 
					        payin_amounts=fpdb_simple.calcPayin(len(names), buyin, fee)
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
        if base=="hold":
 | 
					        if base=="hold":
 | 
				
			||||||
			result = fpdb_save_to_db.tourney_holdem_omaha(cursor, base, category, siteTourneyNo, buyin, fee, knockout, entries, prizepool, tourneyStartTime, payin_amounts, ranks, tourneyTypeId, siteID,
 | 
					            result = fpdb_save_to_db.tourney_holdem_omaha(
 | 
				
			||||||
					siteHandNo, gametypeID, handStartTime, names, playerIDs, startCashes, positions, cardValues, cardSuits, boardValues, boardSuits, winnings, rakes, actionTypes, allIns, actionAmounts, actionNos, hudImportData, maxSeats, tableName, seatNos)
 | 
					                                       backend, db, cursor, base, category, siteTourneyNo, buyin
 | 
				
			||||||
 | 
					                                     , fee, knockout, entries, prizepool, tourneyStartTime
 | 
				
			||||||
 | 
					                                     , payin_amounts, ranks, tourneyTypeId, siteID, siteHandNo
 | 
				
			||||||
 | 
					                                     , gametypeID, handStartTime, names, playerIDs, startCashes
 | 
				
			||||||
 | 
					                                     , positions, cardValues, cardSuits, boardValues, boardSuits
 | 
				
			||||||
 | 
					                                     , winnings, rakes, actionTypes, allIns, actionAmounts
 | 
				
			||||||
 | 
					                                     , actionNos, hudImportData, maxSeats, tableName, seatNos)
 | 
				
			||||||
        elif base=="stud":
 | 
					        elif base=="stud":
 | 
				
			||||||
			result = fpdb_save_to_db.tourney_stud(cursor, base, category, siteTourneyNo, buyin, fee, knockout, entries, prizepool, tourneyStartTime, payin_amounts, ranks, tourneyTypeId, siteID,
 | 
					            result = fpdb_save_to_db.tourney_stud(
 | 
				
			||||||
					siteHandNo, gametypeID, handStartTime, names, playerIDs, startCashes, antes, cardValues, cardSuits, winnings, rakes, actionTypes, allIns, actionAmounts, actionNos, hudImportData, maxSeats, tableName, seatNos)
 | 
					                                       backend, db, cursor, base, category, siteTourneyNo
 | 
				
			||||||
 | 
					                                     , buyin, fee, knockout, entries, prizepool, tourneyStartTime
 | 
				
			||||||
 | 
					                                     , payin_amounts, ranks, tourneyTypeId, siteID, siteHandNo
 | 
				
			||||||
 | 
					                                     , gametypeID, handStartTime, names, playerIDs, startCashes
 | 
				
			||||||
 | 
					                                     , antes, cardValues, cardSuits, winnings, rakes, actionTypes
 | 
				
			||||||
 | 
					                                     , allIns, actionAmounts, actionNos, hudImportData, maxSeats
 | 
				
			||||||
 | 
					                                     , tableName, seatNos)
 | 
				
			||||||
        else:
 | 
					        else:
 | 
				
			||||||
            raise fpdb_simple.FpdbError ("unrecognised category")
 | 
					            raise fpdb_simple.FpdbError ("unrecognised category")
 | 
				
			||||||
    else:
 | 
					    else:
 | 
				
			||||||
        if base=="hold":
 | 
					        if base=="hold":
 | 
				
			||||||
			result = fpdb_save_to_db.ring_holdem_omaha(cursor, base, category, siteHandNo, gametypeID, handStartTime, names, playerIDs, startCashes, positions, cardValues, cardSuits, boardValues, boardSuits, winnings, rakes, actionTypes, allIns, actionAmounts, actionNos, hudImportData, maxSeats, tableName, seatNos)
 | 
					            result = fpdb_save_to_db.ring_holdem_omaha(
 | 
				
			||||||
 | 
					                                       backend, db, cursor, base, category, siteHandNo
 | 
				
			||||||
 | 
					                                     , gametypeID, handStartTime, names, playerIDs
 | 
				
			||||||
 | 
					                                     , startCashes, positions, cardValues, cardSuits
 | 
				
			||||||
 | 
					                                     , boardValues, boardSuits, winnings, rakes
 | 
				
			||||||
 | 
					                                     , actionTypes, allIns, actionAmounts, actionNos
 | 
				
			||||||
 | 
					                                     , hudImportData, maxSeats, tableName, seatNos)
 | 
				
			||||||
        elif base=="stud":
 | 
					        elif base=="stud":
 | 
				
			||||||
			result = fpdb_save_to_db.ring_stud(cursor, base, category, siteHandNo, gametypeID, 
 | 
					            result = fpdb_save_to_db.ring_stud(
 | 
				
			||||||
					handStartTime, names, playerIDs, startCashes, antes, cardValues, 
 | 
					                                       backend, db, cursor, base, category, siteHandNo, gametypeID
 | 
				
			||||||
					cardSuits, winnings, rakes, actionTypes, allIns, actionAmounts, actionNos, hudImportData, maxSeats, tableName, seatNos)
 | 
					                                     , handStartTime, names, playerIDs, startCashes, antes
 | 
				
			||||||
 | 
					                                     , cardValues, cardSuits, winnings, rakes, actionTypes, allIns
 | 
				
			||||||
 | 
					                                     , actionAmounts, actionNos, hudImportData, maxSeats, tableName
 | 
				
			||||||
 | 
					                                     , seatNos)
 | 
				
			||||||
        else:
 | 
					        else:
 | 
				
			||||||
            raise fpdb_simple.FpdbError ("unrecognised category")
 | 
					            raise fpdb_simple.FpdbError ("unrecognised category")
 | 
				
			||||||
        db.commit()
 | 
					        db.commit()
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -18,43 +18,68 @@
 | 
				
			||||||
#This file contains methods to store hands into the db. decides to move this
 | 
					#This file contains methods to store hands into the db. decides to move this
 | 
				
			||||||
#into a seperate file since its ugly, fairly long and just generally in the way.
 | 
					#into a seperate file since its ugly, fairly long and just generally in the way.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					from time import time
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import fpdb_simple
 | 
					import fpdb_simple
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#stores a stud/razz hand into the database
 | 
					#stores a stud/razz hand into the database
 | 
				
			||||||
def ring_stud(cursor, base, category, site_hand_no, gametype_id, hand_start_time, names, player_ids, start_cashes, antes, card_values, card_suits, winnings, rakes, action_types, allIns, action_amounts, actionNos, hudImportData, maxSeats, tableName, seatNos):
 | 
					def ring_stud(backend, db, cursor, base, category, site_hand_no, gametype_id, hand_start_time
 | 
				
			||||||
 | 
					             ,names, player_ids, start_cashes, antes, card_values, card_suits, winnings, rakes
 | 
				
			||||||
 | 
					             ,action_types, allIns, action_amounts, actionNos, hudImportData, maxSeats, tableName
 | 
				
			||||||
 | 
					             ,seatNos):
 | 
				
			||||||
    fpdb_simple.fillCardArrays(len(names), base, category, card_values, card_suits)
 | 
					    fpdb_simple.fillCardArrays(len(names), base, category, card_values, card_suits)
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
	hands_id=fpdb_simple.storeHands(cursor, site_hand_no, gametype_id, hand_start_time, names, tableName, maxSeats)
 | 
					    hands_id=fpdb_simple.storeHands(backend, db, cursor, site_hand_no, gametype_id
 | 
				
			||||||
 | 
					                                   ,hand_start_time, names, tableName, maxSeats)
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    #print "before calling store_hands_players_stud, antes:", antes
 | 
					    #print "before calling store_hands_players_stud, antes:", antes
 | 
				
			||||||
	hands_players_ids=fpdb_simple.store_hands_players_stud(cursor, hands_id, player_ids, 
 | 
					    hands_players_ids=fpdb_simple.store_hands_players_stud(backend, db, cursor, hands_id, player_ids
 | 
				
			||||||
				start_cashes, antes, card_values, card_suits, winnings, rakes, seatNos)
 | 
					                                                          ,start_cashes, antes, card_values
 | 
				
			||||||
 | 
					                                                          ,card_suits, winnings, rakes, seatNos)
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    fpdb_simple.storeHudCache(cursor, base, category, gametype_id, player_ids, hudImportData)
 | 
					    fpdb_simple.storeHudCache(cursor, base, category, gametype_id, player_ids, hudImportData)
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
	fpdb_simple.storeActions(cursor, hands_players_ids, action_types, allIns, action_amounts, actionNos)
 | 
					    fpdb_simple.storeActions(cursor, hands_players_ids, action_types
 | 
				
			||||||
 | 
					                            ,allIns, action_amounts, actionNos)
 | 
				
			||||||
    return hands_id
 | 
					    return hands_id
 | 
				
			||||||
#end def ring_stud
 | 
					#end def ring_stud
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def ring_holdem_omaha(cursor, base, 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, allIns, action_amounts, actionNos, hudImportData, maxSeats, tableName, seatNos):
 | 
					def ring_holdem_omaha(backend, db, cursor, base, 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, allIns
 | 
				
			||||||
 | 
					                     ,action_amounts, actionNos, hudImportData, maxSeats, tableName, seatNos):
 | 
				
			||||||
    """stores a holdem/omaha hand into the database"""
 | 
					    """stores a holdem/omaha hand into the database"""
 | 
				
			||||||
 | 
					    t0 = time()
 | 
				
			||||||
    fpdb_simple.fillCardArrays(len(names), base, category, card_values, card_suits)
 | 
					    fpdb_simple.fillCardArrays(len(names), base, category, card_values, card_suits)
 | 
				
			||||||
 | 
					    t1 = time()
 | 
				
			||||||
    fpdb_simple.fill_board_cards(board_values, board_suits)
 | 
					    fpdb_simple.fill_board_cards(board_values, board_suits)
 | 
				
			||||||
 | 
					    t2 = time()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	hands_id=fpdb_simple.storeHands(cursor, site_hand_no, gametype_id, hand_start_time, names, tableName, maxSeats)
 | 
					    hands_id=fpdb_simple.storeHands(backend, db, cursor, site_hand_no, gametype_id
 | 
				
			||||||
	
 | 
					                                   ,hand_start_time, names, tableName, maxSeats)
 | 
				
			||||||
	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, seatNos)
 | 
					    t3 = time()
 | 
				
			||||||
				
 | 
					    hands_players_ids=fpdb_simple.store_hands_players_holdem_omaha(
 | 
				
			||||||
 | 
					                               backend, db, cursor, category, hands_id, player_ids, start_cashes
 | 
				
			||||||
 | 
					                             , positions, card_values, card_suits, winnings, rakes, seatNos)
 | 
				
			||||||
 | 
					    t4 = time()            
 | 
				
			||||||
    fpdb_simple.storeHudCache(cursor, base, category, gametype_id, player_ids, hudImportData)
 | 
					    fpdb_simple.storeHudCache(cursor, base, category, gametype_id, player_ids, hudImportData)
 | 
				
			||||||
	
 | 
					    t5 = time()
 | 
				
			||||||
    fpdb_simple.store_board_cards(cursor, hands_id, board_values, board_suits)
 | 
					    fpdb_simple.store_board_cards(cursor, hands_id, board_values, board_suits)
 | 
				
			||||||
	
 | 
					    t6 = time()
 | 
				
			||||||
    fpdb_simple.storeActions(cursor, hands_players_ids, action_types, allIns, action_amounts, actionNos)
 | 
					    fpdb_simple.storeActions(cursor, hands_players_ids, action_types, allIns, action_amounts, actionNos)
 | 
				
			||||||
 | 
					    t7 = time()
 | 
				
			||||||
 | 
					    print "cards=%4.3f board=%4.3f hands=%4.3f plyrs=%4.3f hudcache=%4.3f board=%4.3f actions=%4.3f" \
 | 
				
			||||||
 | 
					    % (t1-t0, t2-t1, t3-t2, t4-t3, t5-t4, t6-t5, t7-t6)
 | 
				
			||||||
    return hands_id
 | 
					    return hands_id
 | 
				
			||||||
#end def ring_holdem_omaha
 | 
					#end def ring_holdem_omaha
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def tourney_holdem_omaha(cursor, base, category, siteTourneyNo, buyin, fee, knockout, entries, prizepool, tourney_start, payin_amounts, ranks, tourneyTypeId, siteId, #end of tourney specific params
 | 
					def tourney_holdem_omaha(backend, db, cursor, base, category, siteTourneyNo, buyin, fee, knockout
 | 
				
			||||||
			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, allIns, action_amounts, actionNos, hudImportData, maxSeats, tableName, seatNos):
 | 
					                        ,entries, prizepool, tourney_start, payin_amounts, ranks, tourneyTypeId
 | 
				
			||||||
 | 
					                        ,siteId #end of tourney specific params
 | 
				
			||||||
 | 
					                        ,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, allIns, action_amounts
 | 
				
			||||||
 | 
					                        ,actionNos, hudImportData, maxSeats, tableName, seatNos):
 | 
				
			||||||
    """stores a tourney holdem/omaha hand into the database"""
 | 
					    """stores a tourney holdem/omaha hand into the database"""
 | 
				
			||||||
    fpdb_simple.fillCardArrays(len(names), base, category, card_values, card_suits)
 | 
					    fpdb_simple.fillCardArrays(len(names), base, category, card_values, card_suits)
 | 
				
			||||||
    fpdb_simple.fill_board_cards(board_values, board_suits)
 | 
					    fpdb_simple.fill_board_cards(board_values, board_suits)
 | 
				
			||||||
| 
						 | 
					@ -62,9 +87,12 @@ def tourney_holdem_omaha(cursor, base, category, siteTourneyNo, buyin, fee, knoc
 | 
				
			||||||
    tourney_id=fpdb_simple.store_tourneys(cursor, tourneyTypeId, siteTourneyNo, entries, prizepool, tourney_start)
 | 
					    tourney_id=fpdb_simple.store_tourneys(cursor, tourneyTypeId, siteTourneyNo, entries, prizepool, tourney_start)
 | 
				
			||||||
    tourneys_players_ids=fpdb_simple.store_tourneys_players(cursor, tourney_id, player_ids, payin_amounts, ranks, winnings)
 | 
					    tourneys_players_ids=fpdb_simple.store_tourneys_players(cursor, tourney_id, player_ids, payin_amounts, ranks, winnings)
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
	hands_id=fpdb_simple.storeHands(cursor, site_hand_no, gametype_id, hand_start_time, names, tableName, maxSeats)
 | 
					    hands_id=fpdb_simple.storeHands(backend, db, cursor, site_hand_no, gametype_id
 | 
				
			||||||
 | 
					                                   ,hand_start_time, names, tableName, maxSeats)
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
	hands_players_ids=fpdb_simple.store_hands_players_holdem_omaha_tourney(cursor, category, hands_id, player_ids, start_cashes, positions, card_values, card_suits, winnings, rakes, seatNos, tourneys_players_ids)
 | 
					    hands_players_ids=fpdb_simple.store_hands_players_holdem_omaha_tourney(
 | 
				
			||||||
 | 
					                      backend, db, cursor, category, hands_id, player_ids, start_cashes, positions
 | 
				
			||||||
 | 
					                    , card_values, card_suits, winnings, rakes, seatNos, tourneys_players_ids)
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    fpdb_simple.storeHudCache(cursor, base, category, gametype_id, player_ids, hudImportData)
 | 
					    fpdb_simple.storeHudCache(cursor, base, category, gametype_id, player_ids, hudImportData)
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
| 
						 | 
					@ -74,8 +102,11 @@ def tourney_holdem_omaha(cursor, base, category, siteTourneyNo, buyin, fee, knoc
 | 
				
			||||||
    return hands_id
 | 
					    return hands_id
 | 
				
			||||||
#end def tourney_holdem_omaha
 | 
					#end def tourney_holdem_omaha
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def tourney_stud(cursor, base, category, siteTourneyNo, buyin, fee, knockout, entries, prizepool, tourneyStartTime, payin_amounts, ranks, tourneyTypeId, siteId,
 | 
					def tourney_stud(backend, db, cursor, base, category, siteTourneyNo, buyin, fee, knockout, entries
 | 
				
			||||||
					siteHandNo, gametypeId, handStartTime, names, playerIds, startCashes, antes, cardValues, cardSuits, winnings, rakes, actionTypes, allIns, actionAmounts, actionNos, hudImportData, maxSeats, tableName, seatNos):
 | 
					                ,prizepool, tourneyStartTime, payin_amounts, ranks, tourneyTypeId, siteId
 | 
				
			||||||
 | 
					                ,siteHandNo, gametypeId, handStartTime, names, playerIds, startCashes, antes
 | 
				
			||||||
 | 
					                ,cardValues, cardSuits, winnings, rakes, actionTypes, allIns, actionAmounts
 | 
				
			||||||
 | 
					                ,actionNos, hudImportData, maxSeats, tableName, seatNos):
 | 
				
			||||||
#stores a tourney stud/razz hand into the database
 | 
					#stores a tourney stud/razz hand into the database
 | 
				
			||||||
    fpdb_simple.fillCardArrays(len(names), base, category, cardValues, cardSuits)
 | 
					    fpdb_simple.fillCardArrays(len(names), base, category, cardValues, cardSuits)
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
| 
						 | 
					@ -83,9 +114,11 @@ def tourney_stud(cursor, base, category, siteTourneyNo, buyin, fee, knockout, en
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    tourneys_players_ids=fpdb_simple.store_tourneys_players(cursor, tourney_id, playerIds, payin_amounts, ranks, winnings)
 | 
					    tourneys_players_ids=fpdb_simple.store_tourneys_players(cursor, tourney_id, playerIds, payin_amounts, ranks, winnings)
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
	hands_id=fpdb_simple.storeHands(cursor, siteHandNo, gametypeId, handStartTime, names, tableName, maxSeats)
 | 
					    hands_id=fpdb_simple.storeHands(backend, db, cursor, siteHandNo, gametypeId, handStartTime, names, tableName, maxSeats)
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
	hands_players_ids=fpdb_simple.store_hands_players_stud_tourney(cursor, hands_id, playerIds, startCashes, antes, cardValues, cardSuits, winnings, rakes, seatNos, tourneys_players_ids)
 | 
					    hands_players_ids=fpdb_simple.store_hands_players_stud_tourney(backend, db, cursor, hands_id
 | 
				
			||||||
 | 
					                                             , playerIds, startCashes, antes, cardValues, cardSuits
 | 
				
			||||||
 | 
					                                             , winnings, rakes, seatNos, tourneys_players_ids)
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    fpdb_simple.storeHudCache(cursor, base, category, gametypeId, playerIds, hudImportData)
 | 
					    fpdb_simple.storeHudCache(cursor, base, category, gametypeId, playerIds, hudImportData)
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										180
									
								
								pyfpdb/fpdb_simple.py
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						
									
										180
									
								
								pyfpdb/fpdb_simple.py
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							| 
						 | 
					@ -23,6 +23,11 @@ import re
 | 
				
			||||||
PS=1
 | 
					PS=1
 | 
				
			||||||
FTP=2
 | 
					FTP=2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					MYSQL_INNODB=2
 | 
				
			||||||
 | 
					PGSQL=3
 | 
				
			||||||
 | 
					SQLITE=4
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class DuplicateError(Exception):
 | 
					class DuplicateError(Exception):
 | 
				
			||||||
    def __init__(self, value):
 | 
					    def __init__(self, value):
 | 
				
			||||||
        self.value = value
 | 
					        self.value = value
 | 
				
			||||||
| 
						 | 
					@ -35,6 +40,37 @@ class FpdbError(Exception):
 | 
				
			||||||
    def __str__(self):
 | 
					    def __str__(self):
 | 
				
			||||||
        return repr(self.value)
 | 
					        return repr(self.value)
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 | 
					# gets value for last auto-increment key generated
 | 
				
			||||||
 | 
					# returns -1 if a problem occurs
 | 
				
			||||||
 | 
					def getLastInsertId(backend, conn, cursor):
 | 
				
			||||||
 | 
					    if backend == MYSQL_INNODB:
 | 
				
			||||||
 | 
					        ret = conn.insert_id()
 | 
				
			||||||
 | 
					        if ret < 1 or ret > 999999999:
 | 
				
			||||||
 | 
					            print "getLastInsertId(): problem fetching insert_id? ret=", ret
 | 
				
			||||||
 | 
					            ret = -1
 | 
				
			||||||
 | 
					    elif backend == PGSQL:
 | 
				
			||||||
 | 
					        # some options:
 | 
				
			||||||
 | 
					        # currval(hands_id_seq) - use name of implicit seq here
 | 
				
			||||||
 | 
					        # lastval() - still needs sequences set up?
 | 
				
			||||||
 | 
					        # insert ... returning  is useful syntax (but postgres specific?)
 | 
				
			||||||
 | 
					        # see rules (fancy trigger type things)
 | 
				
			||||||
 | 
					        cursor.execute ("SELECT lastval()")
 | 
				
			||||||
 | 
					        row = cursor.fetchone()
 | 
				
			||||||
 | 
					        if not row:
 | 
				
			||||||
 | 
					            print "getLastInsertId(%s): problem fetching lastval? row=" % seq, row
 | 
				
			||||||
 | 
					            ret = -1
 | 
				
			||||||
 | 
					        else:
 | 
				
			||||||
 | 
					            ret = row[0]
 | 
				
			||||||
 | 
					    elif backend == SQLITE:
 | 
				
			||||||
 | 
					        # don't know how to do this in sqlite
 | 
				
			||||||
 | 
					        print "getLastInsertId(): not coded for sqlite yet"
 | 
				
			||||||
 | 
					        ret = -1
 | 
				
			||||||
 | 
					    else:
 | 
				
			||||||
 | 
					        print "getLastInsertId(): unknown backend ", backend
 | 
				
			||||||
 | 
					        ret = -1
 | 
				
			||||||
 | 
					    return ret
 | 
				
			||||||
 | 
					#end def getLastInsertId
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
#returns an array of the total money paid. intending to add rebuys/addons here
 | 
					#returns an array of the total money paid. intending to add rebuys/addons here
 | 
				
			||||||
def calcPayin(count, buyin, fee):
 | 
					def calcPayin(count, buyin, fee):
 | 
				
			||||||
    result=[]
 | 
					    result=[]
 | 
				
			||||||
| 
						 | 
					@ -54,8 +90,7 @@ def checkPositions(positions):
 | 
				
			||||||
            pass
 | 
					            pass
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
        ### RHH modified to allow for "position 9" here (pos==9 is when you're a dead hand before the BB
 | 
					        ### RHH modified to allow for "position 9" here (pos==9 is when you're a dead hand before the BB
 | 
				
			||||||
		### eric - position 8 could be valid - if only one blind is posted, but there's still 10 people, ie a sitout is present, and the small is dead...
 | 
					        if (pos!="B" and pos!="S" and pos!=0 and pos!=1 and pos!=2 and pos!=3 and pos!=4 and pos!=5 and pos!=6 and pos!=7 and pos!=9):
 | 
				
			||||||
		if not (pos == "B" or pos == "S" or (pos >= 0 and pos <= 9)):
 | 
					 | 
				
			||||||
            raise FpdbError("invalid position found in checkPositions. i: "+str(i)+" position: "+str(pos))
 | 
					            raise FpdbError("invalid position found in checkPositions. i: "+str(i)+" position: "+str(pos))
 | 
				
			||||||
#end def fpdb_simple.checkPositions
 | 
					#end def fpdb_simple.checkPositions
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
| 
						 | 
					@ -485,6 +520,7 @@ def isActionLine(line):
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
#returns whether this is a duplicate
 | 
					#returns whether this is a duplicate
 | 
				
			||||||
def isAlreadyInDB(cursor, gametypeID, siteHandNo):
 | 
					def isAlreadyInDB(cursor, gametypeID, siteHandNo):
 | 
				
			||||||
 | 
					    #print "isAlreadyInDB gtid,shand:",gametypeID, siteHandNo
 | 
				
			||||||
    cursor.execute ("SELECT id FROM Hands WHERE gametypeId=%s AND siteHandNo=%s", (gametypeID, siteHandNo))
 | 
					    cursor.execute ("SELECT id FROM Hands WHERE gametypeId=%s AND siteHandNo=%s", (gametypeID, siteHandNo))
 | 
				
			||||||
    result=cursor.fetchall()
 | 
					    result=cursor.fetchall()
 | 
				
			||||||
    if (len(result)>=1):
 | 
					    if (len(result)>=1):
 | 
				
			||||||
| 
						 | 
					@ -735,7 +771,7 @@ def parseCardLine(site, category, street, line, names, cardValues, cardSuits, bo
 | 
				
			||||||
                    print "line:",line,"cardValues[playerNo]:",cardValues[playerNo]
 | 
					                    print "line:",line,"cardValues[playerNo]:",cardValues[playerNo]
 | 
				
			||||||
                    raise FpdbError("read too many/too few holecards in parseCardLine")
 | 
					                    raise FpdbError("read too many/too few holecards in parseCardLine")
 | 
				
			||||||
        elif (category=="razz" or category=="studhi" or category=="studhilo"):
 | 
					        elif (category=="razz" or category=="studhi" or category=="studhilo"):
 | 
				
			||||||
			if (line.find("shows")==-1 and line.find("mucked") == -1):
 | 
					            if (line.find("shows")==-1):
 | 
				
			||||||
                #print "parseCardLine(in stud if), street:", street
 | 
					                #print "parseCardLine(in stud if), street:", street
 | 
				
			||||||
                if line[pos+2]=="]": #-> not (hero and 3rd street)
 | 
					                if line[pos+2]=="]": #-> not (hero and 3rd street)
 | 
				
			||||||
                    cardValues[playerNo][street+2]=line[pos:pos+1]
 | 
					                    cardValues[playerNo][street+2]=line[pos:pos+1]
 | 
				
			||||||
| 
						 | 
					@ -832,16 +868,14 @@ def parseHandStartTime(topline, site):
 | 
				
			||||||
            tmp=topline[pos1:pos2]
 | 
					            tmp=topline[pos1:pos2]
 | 
				
			||||||
            isUTC=True
 | 
					            isUTC=True
 | 
				
			||||||
        else:
 | 
					        else:
 | 
				
			||||||
			tmp=topline
 | 
					            tmp=topline[-30:]
 | 
				
			||||||
            #print "parsehandStartTime, tmp:", tmp
 | 
					            #print "parsehandStartTime, tmp:", tmp
 | 
				
			||||||
            pos = tmp.find("-")+2
 | 
					            pos = tmp.find("-")+2
 | 
				
			||||||
            tmp = tmp[pos:]
 | 
					            tmp = tmp[pos:]
 | 
				
			||||||
        #Need to match either
 | 
					        #Need to match either
 | 
				
			||||||
        # 2008/09/07 06:23:14 ET or
 | 
					        # 2008/09/07 06:23:14 ET or
 | 
				
			||||||
		# 2008/08/17 - 01:14:43 (ET) or
 | 
					        # 2008/08/17 - 01:14:43 (ET)
 | 
				
			||||||
		# 2008/11/12 9:33:31 CET [2008/11/12 3:33:31 ET]
 | 
					        m = re.match('(?P<YEAR>[0-9]{4})\/(?P<MON>[0-9]{2})\/(?P<DAY>[0-9]{2})[\- ]+(?P<HR>[0-9]{2}):(?P<MIN>[0-9]{2}):(?P<SEC>[0-9]{2})',tmp)
 | 
				
			||||||
		rexx = '(?P<YEAR>[0-9]{4})\/(?P<MON>[0-9]{2})\/(?P<DAY>[0-9]{2})[\- ]+(?P<HR>[0-9]+):(?P<MIN>[0-9]+):(?P<SEC>[0-9]+)'
 | 
					 | 
				
			||||||
		m = re.search(rexx,tmp)
 | 
					 | 
				
			||||||
        #print "year:", int(m.group('YEAR')), "month", int(m.group('MON')), "day", int(m.group('DAY')), "hour", int(m.group('HR')), "minute", int(m.group('MIN')), "second", int(m.group('SEC'))
 | 
					        #print "year:", int(m.group('YEAR')), "month", int(m.group('MON')), "day", int(m.group('DAY')), "hour", int(m.group('HR')), "minute", int(m.group('MIN')), "second", int(m.group('SEC'))
 | 
				
			||||||
        result = datetime.datetime(int(m.group('YEAR')), int(m.group('MON')), int(m.group('DAY')), int(m.group('HR')), int(m.group('MIN')), int(m.group('SEC')))
 | 
					        result = datetime.datetime(int(m.group('YEAR')), int(m.group('MON')), int(m.group('DAY')), int(m.group('HR')), int(m.group('MIN')), int(m.group('SEC')))
 | 
				
			||||||
    else:
 | 
					    else:
 | 
				
			||||||
| 
						 | 
					@ -894,11 +928,6 @@ def parsePositions (hand, names):
 | 
				
			||||||
    if (bb!=-1):
 | 
					    if (bb!=-1):
 | 
				
			||||||
        bb=recognisePlayerNo(bb, names, "bet")
 | 
					        bb=recognisePlayerNo(bb, names, "bet")
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
#   print "sb = ", sb, "bb = ", bb
 | 
					 | 
				
			||||||
	if bb == sb:
 | 
					 | 
				
			||||||
		sbExists = False
 | 
					 | 
				
			||||||
		sb = -1
 | 
					 | 
				
			||||||
	
 | 
					 | 
				
			||||||
    #write blinds into array
 | 
					    #write blinds into array
 | 
				
			||||||
    if (sbExists):
 | 
					    if (sbExists):
 | 
				
			||||||
        positions[sb]="S"
 | 
					        positions[sb]="S"
 | 
				
			||||||
| 
						 | 
					@ -915,25 +944,16 @@ def parsePositions (hand, names):
 | 
				
			||||||
        positions[arraypos]=distFromBtn
 | 
					        positions[arraypos]=distFromBtn
 | 
				
			||||||
        arraypos-=1
 | 
					        arraypos-=1
 | 
				
			||||||
        distFromBtn+=1
 | 
					        distFromBtn+=1
 | 
				
			||||||
	# eric - this takes into account dead seats between blinds
 | 
					 | 
				
			||||||
	if sbExists:
 | 
					 | 
				
			||||||
		i = bb - 1
 | 
					 | 
				
			||||||
		while positions[i] < 0 and i != sb:
 | 
					 | 
				
			||||||
			positions[i] = 9
 | 
					 | 
				
			||||||
			i -= 1
 | 
					 | 
				
			||||||
	### RHH - Changed to set the null seats before BB to "9"			
 | 
					 | 
				
			||||||
	if sbExists:
 | 
					 | 
				
			||||||
		i = sb-1
 | 
					 | 
				
			||||||
	else:
 | 
					 | 
				
			||||||
		i = bb-1
 | 
					 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 | 
					    ### RHH - Changed to set the null seats before BB to "9"
 | 
				
			||||||
 | 
					    i=bb-1
 | 
				
			||||||
    while positions[i] < 0:
 | 
					    while positions[i] < 0:
 | 
				
			||||||
        positions[i]=9
 | 
					        positions[i]=9
 | 
				
			||||||
        i-=1
 | 
					        i-=1
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    arraypos=len(names)-1
 | 
					    arraypos=len(names)-1
 | 
				
			||||||
	if (bb!=0 or (bb==0 and sbExists==False) or (bb == 1 and sb != arraypos) ):
 | 
					    if (bb!=0 or (bb==0 and sbExists==False)):
 | 
				
			||||||
		while (arraypos>bb and arraypos > sb):
 | 
					        while (arraypos>bb):
 | 
				
			||||||
            positions[arraypos]=distFromBtn
 | 
					            positions[arraypos]=distFromBtn
 | 
				
			||||||
            arraypos-=1
 | 
					            arraypos-=1
 | 
				
			||||||
            distFromBtn+=1
 | 
					            distFromBtn+=1
 | 
				
			||||||
| 
						 | 
					@ -943,7 +963,6 @@ def parsePositions (hand, names):
 | 
				
			||||||
            print "parsePositions names:",names
 | 
					            print "parsePositions names:",names
 | 
				
			||||||
            print "result:",positions
 | 
					            print "result:",positions
 | 
				
			||||||
            raise FpdbError ("failed to read positions")
 | 
					            raise FpdbError ("failed to read positions")
 | 
				
			||||||
    #print str(positions), "\n"
 | 
					 | 
				
			||||||
    return positions
 | 
					    return positions
 | 
				
			||||||
#end def parsePositions
 | 
					#end def parsePositions
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
| 
						 | 
					@ -1039,7 +1058,7 @@ def recogniseCategory(line):
 | 
				
			||||||
#end def recogniseCategory
 | 
					#end def recogniseCategory
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
#returns the int for the gametype_id for the given line
 | 
					#returns the int for the gametype_id for the given line
 | 
				
			||||||
def recogniseGametypeID(cursor, topline, smallBlindLine, site_id, category, isTourney):#todo: this method is messy
 | 
					def recogniseGametypeID(backend, db, cursor, topline, smallBlindLine, site_id, category, isTourney):#todo: this method is messy
 | 
				
			||||||
    #if (topline.find("HORSE")!=-1):
 | 
					    #if (topline.find("HORSE")!=-1):
 | 
				
			||||||
    # raise FpdbError("recogniseGametypeID: HORSE is not yet supported.")
 | 
					    # raise FpdbError("recogniseGametypeID: HORSE is not yet supported.")
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
| 
						 | 
					@ -1090,6 +1109,9 @@ def recogniseGametypeID(cursor, topline, smallBlindLine, site_id, category, isTo
 | 
				
			||||||
    else:
 | 
					    else:
 | 
				
			||||||
        cursor.execute ("SELECT id FROM Gametypes WHERE siteId=%s AND type=%s AND category=%s AND limitType=%s AND smallBlind=%s AND bigBlind=%s", (site_id, type, category, limit_type, small_bet, big_bet))
 | 
					        cursor.execute ("SELECT id FROM Gametypes WHERE siteId=%s AND type=%s AND category=%s AND limitType=%s AND smallBlind=%s AND bigBlind=%s", (site_id, type, category, limit_type, small_bet, big_bet))
 | 
				
			||||||
    result=cursor.fetchone()
 | 
					    result=cursor.fetchone()
 | 
				
			||||||
 | 
					    #print "recgt1 result=",result
 | 
				
			||||||
 | 
					    #ret=result[0]
 | 
				
			||||||
 | 
					    #print "recgt1 ret=",ret
 | 
				
			||||||
    #print "tried SELECTing gametypes.id, result:",result
 | 
					    #print "tried SELECTing gametypes.id, result:",result
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    try:
 | 
					    try:
 | 
				
			||||||
| 
						 | 
					@ -1120,18 +1142,24 @@ def recogniseGametypeID(cursor, topline, smallBlindLine, site_id, category, isTo
 | 
				
			||||||
                    small_blind=float2int(smallBlindLine[pos:])
 | 
					                    small_blind=float2int(smallBlindLine[pos:])
 | 
				
			||||||
            else:
 | 
					            else:
 | 
				
			||||||
                small_blind=0
 | 
					                small_blind=0
 | 
				
			||||||
			cursor.execute("""INSERT INTO Gametypes
 | 
					            cursor.execute( """INSERT INTO Gametypes(siteId, type, base, category, limitType
 | 
				
			||||||
			(siteId, type, base, category, limitType, hiLo, smallBlind, bigBlind, smallBet, bigBet)
 | 
					                                                    ,hiLo, smallBlind, bigBlind, smallBet, bigBet)
 | 
				
			||||||
			VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s)""", (site_id, type, base, category, limit_type, hiLo, small_blind, big_blind, small_bet, big_bet))
 | 
					                               VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s)"""
 | 
				
			||||||
			cursor.execute ("SELECT id FROM Gametypes WHERE siteId=%s AND type=%s AND category=%s AND limitType=%s AND smallBet=%s AND bigBet=%s", (site_id, type, category, limit_type, small_bet, big_bet))
 | 
					                          , (site_id, type, base, category, limit_type, hiLo
 | 
				
			||||||
 | 
					                            ,small_blind, big_blind, small_bet, big_bet) )
 | 
				
			||||||
 | 
					            #cursor.execute ("SELECT id FROM Gametypes WHERE siteId=%s AND type=%s AND category=%s 
 | 
				
			||||||
 | 
					            #AND limitType=%s AND smallBet=%s AND bigBet=%s", (site_id, type, category, limit_type, small_bet, big_bet))
 | 
				
			||||||
        else:
 | 
					        else:
 | 
				
			||||||
			cursor.execute("""INSERT INTO Gametypes
 | 
					            cursor.execute( """INSERT INTO Gametypes(siteId, type, base, category, limitType
 | 
				
			||||||
			(siteId, type, base, category, limitType, hiLo, smallBlind, bigBlind, smallBet, bigBet)
 | 
					                                                    ,hiLo, smallBlind, bigBlind, smallBet, bigBet)
 | 
				
			||||||
			VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s)""", (site_id, type, base, category, limit_type, hiLo, small_bet, big_bet, 0, 0))#remember, for these bet means blind
 | 
					                               VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s)"""
 | 
				
			||||||
			cursor.execute ("SELECT id FROM Gametypes WHERE siteId=%s AND type=%s AND category=%s AND limitType=%s AND smallBlind=%s AND bigBlind=%s", (site_id, type, category, limit_type, small_bet, big_bet))
 | 
					                          , (site_id, type, base, category, limit_type
 | 
				
			||||||
 | 
					                            ,hiLo, small_bet, big_bet, 0, 0))#remember, for these bet means blind
 | 
				
			||||||
 | 
					            #cursor.execute ("SELECT id FROM Gametypes WHERE siteId=%s AND type=%s AND category=%s
 | 
				
			||||||
 | 
					            #AND limitType=%s AND smallBlind=%s AND bigBlind=%s", (site_id, type, category, limit_type, small_bet, big_bet))
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
		result=cursor.fetchone()
 | 
					        #result=(db.insert_id(),)
 | 
				
			||||||
		#print "created new gametypes.id:",result
 | 
					        result=(getLastInsertId(backend,db,cursor),)
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    return result[0]
 | 
					    return result[0]
 | 
				
			||||||
#end def recogniseGametypeID
 | 
					#end def recogniseGametypeID
 | 
				
			||||||
| 
						 | 
					@ -1253,7 +1281,8 @@ def storeActions(cursor, handsPlayersIds, actionTypes, allIns, actionAmounts, ac
 | 
				
			||||||
    for i in range (len(actionTypes)): #iterate through streets
 | 
					    for i in range (len(actionTypes)): #iterate through streets
 | 
				
			||||||
        for j in range (len(actionTypes[i])): #iterate through names
 | 
					        for j in range (len(actionTypes[i])): #iterate through names
 | 
				
			||||||
            for k in range (len(actionTypes[i][j])): #iterate through individual actions of that player on that street
 | 
					            for k in range (len(actionTypes[i][j])): #iterate through individual actions of that player on that street
 | 
				
			||||||
				cursor.execute ("INSERT INTO HandsActions (handPlayerId, street, actionNo, action, allIn, amount) VALUES (%s, %s, %s, %s, %s, %s)", (handsPlayersIds[j], i, actionNos[i][j][k], actionTypes[i][j][k], allIns[i][j][k], actionAmounts[i][j][k]))
 | 
					                cursor.execute ("INSERT INTO HandsActions (handPlayerId, street, actionNo, action, allIn, amount) VALUES (%s, %s, %s, %s, %s, %s)"
 | 
				
			||||||
 | 
					                               , (handsPlayersIds[j], i, actionNos[i][j][k], actionTypes[i][j][k], allIns[i][j][k], actionAmounts[i][j][k]))
 | 
				
			||||||
#end def storeActions
 | 
					#end def storeActions
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
def store_board_cards(cursor, hands_id, board_values, board_suits):
 | 
					def store_board_cards(cursor, hands_id, board_values, board_suits):
 | 
				
			||||||
| 
						 | 
					@ -1266,15 +1295,19 @@ def store_board_cards(cursor, hands_id, board_values, board_suits):
 | 
				
			||||||
    board_values[4], board_suits[4]))
 | 
					    board_values[4], board_suits[4]))
 | 
				
			||||||
#end def store_board_cards
 | 
					#end def store_board_cards
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
def storeHands(cursor, site_hand_no, gametype_id, hand_start_time, names, tableName, maxSeats):
 | 
					def storeHands(backend, conn, cursor, site_hand_no, gametype_id
 | 
				
			||||||
 | 
					              ,hand_start_time, names, tableName, maxSeats):
 | 
				
			||||||
#stores into table hands
 | 
					#stores into table hands
 | 
				
			||||||
    cursor.execute ("INSERT INTO Hands (siteHandNo, gametypeId, handStart, seats, tableName, importTime, maxSeats) VALUES (%s, %s, %s, %s, %s, %s, %s)", (site_hand_no, gametype_id, hand_start_time, len(names), tableName, datetime.datetime.today(), maxSeats))
 | 
					    cursor.execute ("INSERT INTO Hands (siteHandNo, gametypeId, handStart, seats, tableName, importTime, maxSeats) VALUES (%s, %s, %s, %s, %s, %s, %s)", (site_hand_no, gametype_id, hand_start_time, len(names), tableName, datetime.datetime.today(), maxSeats))
 | 
				
			||||||
    #todo: find a better way of doing this...
 | 
					    #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))
 | 
					    #cursor.execute("SELECT id FROM Hands WHERE siteHandNo=%s AND gametypeId=%s", (site_hand_no, gametype_id))
 | 
				
			||||||
	return cursor.fetchall()[0][0]
 | 
					    #return cursor.fetchall()[0][0]
 | 
				
			||||||
 | 
					    return getLastInsertId(backend, conn, cursor)
 | 
				
			||||||
 | 
					    #return db.insert_id() # mysql only
 | 
				
			||||||
#end def storeHands
 | 
					#end def storeHands
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
def store_hands_players_holdem_omaha(cursor, category, hands_id, player_ids, start_cashes, positions, card_values, card_suits, winnings, rakes, seatNos):
 | 
					def store_hands_players_holdem_omaha(backend, conn, cursor, category, hands_id, player_ids, start_cashes
 | 
				
			||||||
 | 
					                                    ,positions, card_values, card_suits, winnings, rakes, seatNos):
 | 
				
			||||||
    result=[]
 | 
					    result=[]
 | 
				
			||||||
    if (category=="holdem"):
 | 
					    if (category=="holdem"):
 | 
				
			||||||
        for i in range (len(player_ids)):
 | 
					        for i in range (len(player_ids)):
 | 
				
			||||||
| 
						 | 
					@ -1286,8 +1319,9 @@ def store_hands_players_holdem_omaha(cursor, category, hands_id, player_ids, sta
 | 
				
			||||||
            (hands_id, player_ids[i], start_cashes[i], positions[i],
 | 
					            (hands_id, player_ids[i], start_cashes[i], positions[i],
 | 
				
			||||||
            card_values[i][0], card_suits[i][0], card_values[i][1], card_suits[i][1],
 | 
					            card_values[i][0], card_suits[i][0], card_values[i][1], card_suits[i][1],
 | 
				
			||||||
            winnings[i], rakes[i], seatNos[i]))
 | 
					            winnings[i], rakes[i], seatNos[i]))
 | 
				
			||||||
			cursor.execute("SELECT id FROM HandsPlayers WHERE handId=%s AND playerId+0=%s", (hands_id, player_ids[i]))
 | 
					            #cursor.execute("SELECT id FROM HandsPlayers WHERE handId=%s AND playerId=%s", (hands_id, player_ids[i]))
 | 
				
			||||||
			result.append(cursor.fetchall()[0][0])
 | 
					            #result.append(cursor.fetchall()[0][0])
 | 
				
			||||||
 | 
					            result.append( getLastInsertId(backend, conn, cursor) ) # mysql only
 | 
				
			||||||
    elif (category=="omahahi" or category=="omahahilo"):
 | 
					    elif (category=="omahahi" or category=="omahahilo"):
 | 
				
			||||||
        for i in range (len(player_ids)):
 | 
					        for i in range (len(player_ids)):
 | 
				
			||||||
            cursor.execute ("""INSERT INTO HandsPlayers
 | 
					            cursor.execute ("""INSERT INTO HandsPlayers
 | 
				
			||||||
| 
						 | 
					@ -1299,14 +1333,15 @@ def store_hands_players_holdem_omaha(cursor, category, hands_id, player_ids, sta
 | 
				
			||||||
            card_values[i][0], card_suits[i][0], card_values[i][1], card_suits[i][1],
 | 
					            card_values[i][0], card_suits[i][0], card_values[i][1], card_suits[i][1],
 | 
				
			||||||
            card_values[i][2], card_suits[i][2], card_values[i][3], card_suits[i][3],
 | 
					            card_values[i][2], card_suits[i][2], card_values[i][3], card_suits[i][3],
 | 
				
			||||||
            winnings[i], rakes[i], seatNos[i]))
 | 
					            winnings[i], rakes[i], seatNos[i]))
 | 
				
			||||||
			cursor.execute("SELECT id FROM HandsPlayers WHERE handId=%s AND playerId+0=%s", (hands_id, player_ids[i]))
 | 
					            #cursor.execute("SELECT id FROM HandsPlayers WHERE handId=%s AND playerId+0=%s", (hands_id, player_ids[i]))
 | 
				
			||||||
			result.append(cursor.fetchall()[0][0])
 | 
					            #result.append(cursor.fetchall()[0][0])
 | 
				
			||||||
 | 
					            result.append( getLastInsertId(backend, conn, cursor) ) # mysql only
 | 
				
			||||||
    else:
 | 
					    else:
 | 
				
			||||||
        raise FpdbError("invalid category")
 | 
					        raise FpdbError("invalid category")
 | 
				
			||||||
    return result
 | 
					    return result
 | 
				
			||||||
#end def store_hands_players_holdem_omaha
 | 
					#end def store_hands_players_holdem_omaha
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
def store_hands_players_stud(cursor, hands_id, player_ids, start_cashes, antes,
 | 
					def store_hands_players_stud(backend, conn, cursor, hands_id, player_ids, start_cashes, antes,
 | 
				
			||||||
                             card_values, card_suits, winnings, rakes, seatNos):
 | 
					                             card_values, card_suits, winnings, rakes, seatNos):
 | 
				
			||||||
#stores hands_players rows for stud/razz games. returns an array of the resulting IDs
 | 
					#stores hands_players rows for stud/razz games. returns an array of the resulting IDs
 | 
				
			||||||
    result=[]
 | 
					    result=[]
 | 
				
			||||||
| 
						 | 
					@ -1325,12 +1360,15 @@ def store_hands_players_stud(cursor, hands_id, player_ids, start_cashes, antes,
 | 
				
			||||||
        card_values[i][2], card_suits[i][2], card_values[i][3], card_suits[i][3],
 | 
					        card_values[i][2], card_suits[i][2], card_values[i][3], card_suits[i][3],
 | 
				
			||||||
        card_values[i][4], card_suits[i][4], card_values[i][5], card_suits[i][5],
 | 
					        card_values[i][4], card_suits[i][4], card_values[i][5], card_suits[i][5],
 | 
				
			||||||
        card_values[i][6], card_suits[i][6], winnings[i], rakes[i], seatNos[i]))
 | 
					        card_values[i][6], card_suits[i][6], winnings[i], rakes[i], seatNos[i]))
 | 
				
			||||||
		cursor.execute("SELECT id FROM HandsPlayers WHERE handId=%s AND playerId+0=%s", (hands_id, player_ids[i]))
 | 
					        #cursor.execute("SELECT id FROM HandsPlayers WHERE handId=%s AND playerId+0=%s", (hands_id, player_ids[i]))
 | 
				
			||||||
		result.append(cursor.fetchall()[0][0])
 | 
					        #result.append(cursor.fetchall()[0][0])
 | 
				
			||||||
 | 
					        result.append( getLastInsertId(backend, conn, cursor) ) # mysql only
 | 
				
			||||||
    return result
 | 
					    return result
 | 
				
			||||||
#end def store_hands_players_stud
 | 
					#end def store_hands_players_stud
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
def store_hands_players_holdem_omaha_tourney(cursor, category, hands_id, player_ids, start_cashes, positions, card_values, card_suits, winnings, rakes, seatNos, tourneys_players_ids):
 | 
					def store_hands_players_holdem_omaha_tourney(backend, conn, cursor, category, hands_id, player_ids
 | 
				
			||||||
 | 
					                                            ,start_cashes, positions, card_values, card_suits
 | 
				
			||||||
 | 
					                                            , winnings, rakes, seatNos, tourneys_players_ids):
 | 
				
			||||||
    #stores hands_players for tourney holdem/omaha hands
 | 
					    #stores hands_players for tourney holdem/omaha hands
 | 
				
			||||||
    result=[]
 | 
					    result=[]
 | 
				
			||||||
    for i in range (len(player_ids)):
 | 
					    for i in range (len(player_ids)):
 | 
				
			||||||
| 
						 | 
					@ -1356,13 +1394,14 @@ def store_hands_players_holdem_omaha_tourney(cursor, category, hands_id, player_
 | 
				
			||||||
            winnings[i], rakes[i], tourneys_players_ids[i], seatNos[i]))
 | 
					            winnings[i], rakes[i], tourneys_players_ids[i], seatNos[i]))
 | 
				
			||||||
        else:
 | 
					        else:
 | 
				
			||||||
            raise FpdbError ("invalid card_values length:"+str(len(card_values[0])))
 | 
					            raise FpdbError ("invalid card_values length:"+str(len(card_values[0])))
 | 
				
			||||||
		cursor.execute("SELECT id FROM HandsPlayers WHERE handId=%s AND playerId+0=%s", (hands_id, player_ids[i]))
 | 
					        #cursor.execute("SELECT id FROM HandsPlayers WHERE handId=%s AND playerId+0=%s", (hands_id, player_ids[i]))
 | 
				
			||||||
		result.append(cursor.fetchall()[0][0])
 | 
					        #result.append(cursor.fetchall()[0][0])
 | 
				
			||||||
 | 
					        result.append( getLastInsertId(backend, conn, cursor) ) # mysql only
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    return result
 | 
					    return result
 | 
				
			||||||
#end def store_hands_players_holdem_omaha_tourney
 | 
					#end def store_hands_players_holdem_omaha_tourney
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
def store_hands_players_stud_tourney(cursor, hands_id, player_ids, start_cashes,
 | 
					def store_hands_players_stud_tourney(backend, conn, cursor, hands_id, player_ids, start_cashes,
 | 
				
			||||||
            antes, card_values, card_suits, winnings, rakes, seatNos, tourneys_players_ids):
 | 
					            antes, card_values, card_suits, winnings, rakes, seatNos, tourneys_players_ids):
 | 
				
			||||||
#stores hands_players for tourney stud/razz hands
 | 
					#stores hands_players for tourney stud/razz hands
 | 
				
			||||||
    result=[]
 | 
					    result=[]
 | 
				
			||||||
| 
						 | 
					@ -1380,13 +1419,18 @@ def store_hands_players_stud_tourney(cursor, hands_id, player_ids, start_cashes,
 | 
				
			||||||
        card_values[i][2], card_suits[i][2], card_values[i][3], card_suits[i][3],
 | 
					        card_values[i][2], card_suits[i][2], card_values[i][3], card_suits[i][3],
 | 
				
			||||||
        card_values[i][4], card_suits[i][4], card_values[i][5], card_suits[i][5],
 | 
					        card_values[i][4], card_suits[i][4], card_values[i][5], card_suits[i][5],
 | 
				
			||||||
        card_values[i][6], card_suits[i][6], winnings[i], rakes[i], tourneys_players_ids[i], seatNos[i]))
 | 
					        card_values[i][6], card_suits[i][6], winnings[i], rakes[i], tourneys_players_ids[i], seatNos[i]))
 | 
				
			||||||
		cursor.execute("SELECT id FROM HandsPlayers WHERE handId=%s AND playerId=%s", (hands_id, player_ids[i]))
 | 
					        #cursor.execute("SELECT id FROM HandsPlayers WHERE handId=%s AND playerId+0=%s", (hands_id, player_ids[i]))
 | 
				
			||||||
		result.append(cursor.fetchall()[0][0])
 | 
					        #result.append(cursor.fetchall()[0][0])
 | 
				
			||||||
 | 
					        result.append( getLastInsertId(backend, conn, cursor) ) # mysql only
 | 
				
			||||||
    return result
 | 
					    return result
 | 
				
			||||||
#end def store_hands_players_stud_tourney
 | 
					#end def store_hands_players_stud_tourney
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
def generateHudCacheData(player_ids, base, category, action_types, allIns, actionTypeByNo, winnings, totalWinnings, positions):
 | 
					def generateHudCacheData(player_ids, base, category, action_types, allIns, actionTypeByNo
 | 
				
			||||||
	"""calculates data for the HUD during import. IMPORTANT: if you change this method make sure to also change the following storage method and table_viewer.prepare_data if necessary"""
 | 
					                        ,winnings, totalWinnings, positions, actionTypes, actionAmounts):
 | 
				
			||||||
 | 
					    """calculates data for the HUD during import. IMPORTANT: if you change this method make
 | 
				
			||||||
 | 
					sure to also change the following storage method and table_viewer.prepare_data if necessary
 | 
				
			||||||
 | 
					"""
 | 
				
			||||||
 | 
					    #print "generateHudCacheData, len(player_ids)=", len(player_ids)
 | 
				
			||||||
    #setup subarrays of the result dictionary.
 | 
					    #setup subarrays of the result dictionary.
 | 
				
			||||||
    street0VPI=[]
 | 
					    street0VPI=[]
 | 
				
			||||||
    street0Aggr=[]
 | 
					    street0Aggr=[]
 | 
				
			||||||
| 
						 | 
					@ -1692,7 +1736,7 @@ def generateHudCacheData(player_ids, base, category, action_types, allIns, actio
 | 
				
			||||||
                hudDataPositions.append('C')
 | 
					                hudDataPositions.append('C')
 | 
				
			||||||
            elif pos>=2 and pos<=4:
 | 
					            elif pos>=2 and pos<=4:
 | 
				
			||||||
                hudDataPositions.append('M')
 | 
					                hudDataPositions.append('M')
 | 
				
			||||||
			elif pos>=5 and pos<=8:
 | 
					            elif pos>=5 and pos<=7:
 | 
				
			||||||
                hudDataPositions.append('E')
 | 
					                hudDataPositions.append('E')
 | 
				
			||||||
            ### RHH Added this elif to handle being a dead hand before the BB (pos==9)
 | 
					            ### RHH Added this elif to handle being a dead hand before the BB (pos==9)
 | 
				
			||||||
            elif pos==9:
 | 
					            elif pos==9:
 | 
				
			||||||
| 
						 | 
					@ -1906,8 +1950,14 @@ def generateHudCacheData(player_ids, base, category, action_types, allIns, actio
 | 
				
			||||||
    street3CheckCallRaiseDone=[]
 | 
					    street3CheckCallRaiseDone=[]
 | 
				
			||||||
    street4CheckCallRaiseChance=[]
 | 
					    street4CheckCallRaiseChance=[]
 | 
				
			||||||
    street4CheckCallRaiseDone=[]
 | 
					    street4CheckCallRaiseDone=[]
 | 
				
			||||||
	for player in range (len(player_ids)):
 | 
					    #print "b4 totprof calc, len(playerIds)=", len(player_ids)
 | 
				
			||||||
		myTotalProfit=0
 | 
					    for pl in range (len(player_ids)):
 | 
				
			||||||
 | 
					        #print "pl=", pl
 | 
				
			||||||
 | 
					        myTotalProfit=winnings[pl] # still need to deduct costs
 | 
				
			||||||
 | 
					        for i in range (len(actionTypes)): #iterate through streets
 | 
				
			||||||
 | 
					            #for j in range (len(actionTypes[i])): #iterate through names (using pl loop above)
 | 
				
			||||||
 | 
					                for k in range (len(actionTypes[i][pl])): #iterate through individual actions of that player on that street
 | 
				
			||||||
 | 
					                    myTotalProfit -= actionAmounts[i][pl][k]
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
        myStreet1CheckCallRaiseChance=False
 | 
					        myStreet1CheckCallRaiseChance=False
 | 
				
			||||||
        myStreet1CheckCallRaiseDone=False
 | 
					        myStreet1CheckCallRaiseDone=False
 | 
				
			||||||
| 
						 | 
					@ -1918,7 +1968,9 @@ def generateHudCacheData(player_ids, base, category, action_types, allIns, actio
 | 
				
			||||||
        myStreet4CheckCallRaiseChance=False
 | 
					        myStreet4CheckCallRaiseChance=False
 | 
				
			||||||
        myStreet4CheckCallRaiseDone=False
 | 
					        myStreet4CheckCallRaiseDone=False
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
 | 
					        #print "myTotalProfit=", myTotalProfit
 | 
				
			||||||
        totalProfit.append(myTotalProfit)
 | 
					        totalProfit.append(myTotalProfit)
 | 
				
			||||||
 | 
					        #print "totalProfit[]=", totalProfit
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
        street1CheckCallRaiseChance.append(myStreet1CheckCallRaiseChance)
 | 
					        street1CheckCallRaiseChance.append(myStreet1CheckCallRaiseChance)
 | 
				
			||||||
        street1CheckCallRaiseDone.append(myStreet1CheckCallRaiseDone)
 | 
					        street1CheckCallRaiseDone.append(myStreet1CheckCallRaiseDone)
 | 
				
			||||||
| 
						 | 
					@ -1930,6 +1982,7 @@ def generateHudCacheData(player_ids, base, category, action_types, allIns, actio
 | 
				
			||||||
        street4CheckCallRaiseDone.append(myStreet4CheckCallRaiseDone)
 | 
					        street4CheckCallRaiseDone.append(myStreet4CheckCallRaiseDone)
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
    result['totalProfit']=totalProfit
 | 
					    result['totalProfit']=totalProfit
 | 
				
			||||||
 | 
					    #print "res[totalProfit]=", result['totalProfit']
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
    result['street1CheckCallRaiseChance']=street1CheckCallRaiseChance
 | 
					    result['street1CheckCallRaiseChance']=street1CheckCallRaiseChance
 | 
				
			||||||
    result['street1CheckCallRaiseDone']=street1CheckCallRaiseDone
 | 
					    result['street1CheckCallRaiseDone']=street1CheckCallRaiseDone
 | 
				
			||||||
| 
						 | 
					@ -1965,6 +2018,8 @@ def generateFoldToCB(street, playerIDs, didStreetCB, streetCBDone, foldToStreetC
 | 
				
			||||||
def storeHudCache(cursor, base, category, gametypeId, playerIds, hudImportData):
 | 
					def storeHudCache(cursor, base, category, gametypeId, playerIds, hudImportData):
 | 
				
			||||||
# if (category=="holdem" or category=="omahahi" or category=="omahahilo"):
 | 
					# if (category=="holdem" or category=="omahahi" or category=="omahahilo"):
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
 | 
					        #print "storeHudCache, len(playerIds)=", len(playerIds), " len(vpip)=" \
 | 
				
			||||||
 | 
					        #, len(hudImportData['street0VPI']), " len(totprof)=", len(hudImportData['totalProfit'])
 | 
				
			||||||
        for player in range (len(playerIds)):
 | 
					        for player in range (len(playerIds)):
 | 
				
			||||||
            if base=="hold":
 | 
					            if base=="hold":
 | 
				
			||||||
                cursor.execute("SELECT * FROM HudCache WHERE gametypeId+0=%s AND playerId=%s AND activeSeats=%s AND position=%s", (gametypeId, playerIds[player], len(playerIds), hudImportData['position'][player]))
 | 
					                cursor.execute("SELECT * FROM HudCache WHERE gametypeId+0=%s AND playerId=%s AND activeSeats=%s AND position=%s", (gametypeId, playerIds[player], len(playerIds), hudImportData['position'][player]))
 | 
				
			||||||
| 
						 | 
					@ -2049,6 +2104,9 @@ def storeHudCache(cursor, base, category, gametypeId, playerIds, hudImportData):
 | 
				
			||||||
            if hudImportData['foldToStreet4CBChance'][player]: row[50]+=1
 | 
					            if hudImportData['foldToStreet4CBChance'][player]: row[50]+=1
 | 
				
			||||||
            if hudImportData['foldToStreet4CBDone'][player]: row[51]+=1
 | 
					            if hudImportData['foldToStreet4CBDone'][player]: row[51]+=1
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
 | 
					            #print "player=", player
 | 
				
			||||||
 | 
					            #print "len(totalProfit)=", len(hudImportData['totalProfit'])
 | 
				
			||||||
 | 
					            if hudImportData['totalProfit'][player]:
 | 
				
			||||||
                row[52]+=hudImportData['totalProfit'][player]
 | 
					                row[52]+=hudImportData['totalProfit'][player]
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
            if hudImportData['street1CheckCallRaiseChance'][player]: row[53]+=1
 | 
					            if hudImportData['street1CheckCallRaiseChance'][player]: row[53]+=1
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										27
									
								
								pyfpdb/upd_indexes.sql
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										27
									
								
								pyfpdb/upd_indexes.sql
									
									
									
									
									
										Executable file
									
								
							| 
						 | 
					@ -0,0 +1,27 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# script to update indexes on mysql (+other?) database
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					select '1. Dropping indexes' as ' ';
 | 
				
			||||||
 | 
					select 'Can''t drop messages indicate index already gone' as ' ';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ALTER TABLE `fpdb`.`Settings` DROP INDEX `id`;
 | 
				
			||||||
 | 
					ALTER TABLE `fpdb`.`Sites` DROP INDEX `id`;
 | 
				
			||||||
 | 
					ALTER TABLE `fpdb`.`Gametypes` DROP INDEX `id`;
 | 
				
			||||||
 | 
					ALTER TABLE `fpdb`.`Players` DROP INDEX `id`;
 | 
				
			||||||
 | 
					ALTER TABLE `fpdb`.`Autorates` DROP INDEX `id`;
 | 
				
			||||||
 | 
					ALTER TABLE `fpdb`.`Hands` DROP INDEX `id`;
 | 
				
			||||||
 | 
					ALTER TABLE `fpdb`.`BoardCards` DROP INDEX `id`;
 | 
				
			||||||
 | 
					ALTER TABLE `fpdb`.`TourneyTypes` DROP INDEX `id`;
 | 
				
			||||||
 | 
					ALTER TABLE `fpdb`.`Tourneys` DROP INDEX `id`;
 | 
				
			||||||
 | 
					ALTER TABLE `fpdb`.`TourneysPlayers` DROP INDEX `id`;
 | 
				
			||||||
 | 
					ALTER TABLE `fpdb`.`HandsPlayers` DROP INDEX `id`;
 | 
				
			||||||
 | 
					ALTER TABLE `fpdb`.`HandsActions` DROP INDEX `id`;
 | 
				
			||||||
 | 
					ALTER TABLE `fpdb`.`HudCache` DROP INDEX `id`;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					select '2. Adding extra indexes on useful fields' as ' ';
 | 
				
			||||||
 | 
					select 'Duplicate key name messages indicate new indexes already there' as ' '; 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ALTER TABLE `fpdb`.`tourneys` ADD INDEX `siteTourneyNo`(`siteTourneyNo`);
 | 
				
			||||||
 | 
					ALTER TABLE `fpdb`.`hands` ADD INDEX `siteHandNo`(`siteHandNo`);
 | 
				
			||||||
 | 
					ALTER TABLE `fpdb`.`players` ADD INDEX `name`(`name`);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										0
									
								
								readme.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								readme.txt
									
									
									
									
									
										Normal file
									
								
							
		Loading…
	
		Reference in New Issue
	
	Block a user