diff --git a/pyfpdb/Database.py b/pyfpdb/Database.py
index 7672d33c..90a464ba 100644
--- a/pyfpdb/Database.py
+++ b/pyfpdb/Database.py
@@ -2115,6 +2115,20 @@ class Database:
result = c.fetchall()
return result
#end def getTourneyTypesIds
+
+ def getTourneyInfo(self, siteName, tourneyNo):
+ c = self.get_cursor()
+ c.execute(self.sql.query['getTourneyInfo'], (siteName, tourneyNo))
+ columnNames=c.description
+ #print "columnNames:",columnNames
+
+ names=[]
+ for column in columnNames:
+ names.append(column[0])
+
+ data=c.fetchone()
+ return (names,data)
+ #end def getTourneyInfo
#end class Database
# Class used to hold all the data needed to write a hand to the db
diff --git a/pyfpdb/GuiTourneyViewer.py b/pyfpdb/GuiTourneyViewer.py
new file mode 100644
index 00000000..ab0bb38d
--- /dev/null
+++ b/pyfpdb/GuiTourneyViewer.py
@@ -0,0 +1,86 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+
+#Copyright 2010 Steffen Schaumburg
+#This program is free software: you can redistribute it and/or modify
+#it under the terms of the GNU Affero General Public License as published by
+#the Free Software Foundation, version 3 of the License.
+#
+#This program is distributed in the hope that it will be useful,
+#but WITHOUT ANY WARRANTY; without even the implied warranty of
+#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+#GNU General Public License for more details.
+#
+#You should have received a copy of the GNU Affero General Public License
+#along with this program. If not, see .
+#In the "official" distribution you can find the license in agpl-3.0.txt.
+
+import threading
+import pygtk
+pygtk.require('2.0')
+import gtk
+
+class GuiTourneyViewer (threading.Thread):
+ def __init__(self, config, db, sql, mainwin, debug=True):
+ self.db = db
+
+ self.mainVBox = gtk.VBox()
+ self.interfaceHBox = gtk.HBox()
+ self.mainVBox.pack_start(self.interfaceHBox, expand=False)
+
+ self.siteBox = gtk.combo_box_new_text()
+ for site in config.supported_sites:
+ self.siteBox.append_text(site)
+ self.siteBox.set_active(0)
+ self.interfaceHBox.add(self.siteBox)
+
+ label=gtk.Label("Enter the tourney number you want to display:")
+ self.interfaceHBox.add(label)
+
+ self.entryBox = gtk.Entry()
+ self.interfaceHBox.add(self.entryBox)
+
+ self.button = gtk.Button("_Display")
+ self.button.connect('clicked', self.displayClicked)
+ self.interfaceHBox.add(self.button)
+
+ self.table = gtk.Table(columns=10, rows=9)
+ self.mainVBox.add(self.table)
+
+ self.mainVBox.show_all()
+ #end def __init__
+
+ def displayClicked(self, widget, data=None):
+ tourneyNo=int(self.entryBox.get_text())
+ siteName=self.siteBox.get_active_text()
+
+ self.table.destroy()
+ self.table=gtk.Table(columns=10, rows=9)
+ self.mainVBox.add(self.table)
+
+ result=self.db.getTourneyInfo(siteName, tourneyNo)
+ x=0
+ y=0
+ for i in range(1,len(result[0])):
+ if y==9:
+ x+=2
+ y=0
+
+ label=gtk.Label(result[0][i])
+ self.table.attach(label,x,x+1,y,y+1)
+
+ if result[1][i]==None:
+ label=gtk.Label("N/A")
+ else:
+ label=gtk.Label(result[1][i])
+ self.table.attach(label,x+1,x+2,y,y+1)
+
+ y+=1
+ self.mainVBox.show_all()
+ #def displayClicked
+
+ def get_vbox(self):
+ """returns the vbox of this thread"""
+ return self.mainVBox
+ #end def get_vbox
+#end class GuiTourneyViewer
diff --git a/pyfpdb/SQL.py b/pyfpdb/SQL.py
index 9b43241b..216d91cc 100644
--- a/pyfpdb/SQL.py
+++ b/pyfpdb/SQL.py
@@ -3812,6 +3812,13 @@ class Sql:
WHERE tt.siteId=%s AND t.siteTourneyNo=%s
"""
+ self.query['getTourneyInfo'] = """SELECT tt.*, t.*
+ FROM Tourneys t
+ INNER JOIN TourneyTypes tt ON (t.tourneyTypeId = tt.id)
+ INNER JOIN Sites s ON (tt.siteId = s.id)
+ WHERE s.name=%s AND t.siteTourneyNo=%s
+ """
+
self.query['insertTourney'] = """INSERT INTO Tourneys
(tourneyTypeId, siteTourneyNo, entries, prizepool,
startTime, endTime, tourneyName, matrixIdProcessed,
diff --git a/pyfpdb/fpdb.pyw b/pyfpdb/fpdb.pyw
index 70986c3e..75faebf2 100755
--- a/pyfpdb/fpdb.pyw
+++ b/pyfpdb/fpdb.pyw
@@ -106,6 +106,7 @@ import GuiBulkImport
import ImapFetcher
import GuiRingPlayerStats
import GuiTourneyPlayerStats
+import GuiTourneyViewer
import GuiPositionalStats
import GuiAutoImport
import GuiGraphViewer
@@ -794,6 +795,7 @@ class fpdb:
+
@@ -833,6 +835,7 @@ class fpdb:
('graphs', None, '_Graphs', 'G', 'Graphs', self.tabGraphViewer),
('ringplayerstats', None, 'Ring _Player Stats (tabulated view)', 'P', 'Ring Player Stats (tabulated view)', self.tab_ring_player_stats),
('tourneyplayerstats', None, '_Tourney Player Stats (tabulated view, mysql only)', 'T', 'Tourney Player Stats (tabulated view, mysql only)', self.tab_tourney_player_stats),
+ ('tourneyviewer', None, 'Tourney _Viewer', None, 'Tourney Viewer)', self.tab_tourney_viewer_stats),
('posnstats', None, 'P_ositional Stats (tabulated view)', 'O', 'Positional Stats (tabulated view)', self.tab_positional_stats),
('sessionstats', None, 'Session Stats', None, 'Session Stats', self.tab_session_stats),
('database', None, '_Database'),
@@ -1033,6 +1036,12 @@ class fpdb:
ps_tab=new_ps_thread.get_vbox()
self.add_and_display_tab(ps_tab, "Tourney Player Stats")
+ def tab_tourney_viewer_stats(self, widget, data=None):
+ new_thread = GuiTourneyViewer.GuiTourneyViewer(self.config, self.db, self.sql, self.window)
+ self.threads.append(new_thread)
+ tab=new_thread.get_vbox()
+ self.add_and_display_tab(tab, "Tourney Viewer")
+
def tab_positional_stats(self, widget, data=None):
new_ps_thread = GuiPositionalStats.GuiPositionalStats(self.config, self.sql)
self.threads.append(new_ps_thread)