Renaming main class to be meaningful
[multilist] / src / libsqldialog.py
1 #!/usr/bin/env python
2 # -*- coding: utf-8 -*-
3
4 """
5 This file is part of Multilist.
6
7 Multilist is free software: you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation, either version 3 of the License, or
10 (at your option) any later version.
11
12 Multilist is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15 GNU General Public License for more details.
16
17 You should have received a copy of the GNU General Public License
18 along with Multilist.  If not, see <http://www.gnu.org/licenses/>.
19
20 Copyright (C) 2008 Christoph Würstle
21 """
22
23 import time
24 import gtk
25 import logging
26
27
28 try:
29         _
30 except NameError:
31         _ = lambda x: x
32
33
34 _moduleLogger = logging.getLogger(__name__)
35
36
37 class sqlDialog(gtk.Dialog):
38
39         def __init__(self,db):
40                 self.db=db
41
42                 _moduleLogger.info("sqldialog, init")
43
44                 gtk.Dialog.__init__(self,_("SQL History (the past two days):"),None,gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT,(gtk.STOCK_OK, gtk.RESPONSE_ACCEPT))
45
46                 self.add_button(_("Export"), 444)
47                 self.set_position(gtk.WIN_POS_CENTER)
48
49                 self.liststore = gtk.ListStore(str, str, str)
50
51                 # create the TreeView using liststore
52                 self.treeview = gtk.TreeView(self.liststore)
53
54                 # create a CellRenderers to render the data
55                 self.cell1 = gtk.CellRendererText()
56                 self.cell2 = gtk.CellRendererText()
57                 self.cell3 = gtk.CellRendererText()
58                 #self.cell1.set_property('markup', 1)
59
60                 # create the TreeViewColumns to display the data
61                 self.tvcolumn1 = gtk.TreeViewColumn(_('Date'))
62                 self.tvcolumn2 = gtk.TreeViewColumn(_('SQL'))
63                 self.tvcolumn3 = gtk.TreeViewColumn(_('Parameter'))
64
65                 # add columns to treeview
66                 self.treeview.append_column(self.tvcolumn1)
67                 self.treeview.append_column(self.tvcolumn2)
68                 self.treeview.append_column(self.tvcolumn3)
69
70                 self.tvcolumn1.pack_start(self.cell1, True)
71                 self.tvcolumn2.pack_start(self.cell2, True)
72                 self.tvcolumn3.pack_start(self.cell3, True)
73
74                 self.tvcolumn1.set_attributes(self.cell1, text=0) #Spalten setzten hier!!!!
75                 self.tvcolumn2.set_attributes(self.cell2, text=1)
76                 self.tvcolumn3.set_attributes(self.cell3, text=2)
77
78                 # make treeview searchable
79                 #self.treeview.set_search_column(0)
80                 #self.tvcolumn.set_sort_column_id(0)
81
82                 # Allow NOT drag and drop reordering of rows
83                 self.treeview.set_reorderable(False)
84
85                 scrolled_window = gtk.ScrolledWindow()
86                 scrolled_window.set_policy(gtk.POLICY_AUTOMATIC,gtk.POLICY_AUTOMATIC)
87                 scrolled_window.add(self.treeview)
88                 #self.pack_start(scrolled_window, expand=True, fill=True, padding=0)
89
90                 self.vbox.pack_start(scrolled_window, True, True, 0)
91
92                 self.vbox.show_all()
93
94                 msgstring=""
95                 sql="SELECT pcdatum,sql,param FROM logtable WHERE pcdatum>? ORDER BY pcdatum DESC"
96                 rows=db.ladeSQL(sql,(time.time()-3*24*3600,))
97                 i=0
98                 for row in rows:
99                         pcdatum,sql,param = row
100                         datum=str(time.strftime("%d.%m.%y %H:%M:%S ", (time.localtime(pcdatum))))
101                         if len(param)>100:
102                                 param=param[:20]+_(" (Reduced parameter) ")+param[20:]
103                         self.liststore.append([datum, sql,param])
104                         i+=1
105                         if (i>50):
106                                 break
107
108                 self.set_size_request(500,400)
109
110         def exportSQL(self,filename):
111                 f = open(filename, 'w')
112                 msgstring=""
113                 sql="SELECT pcdatum,sql,param FROM logtable WHERE pcdatum>? ORDER BY pcdatum DESC"
114                 rows=self.db.ladeSQL(sql,(time.time()-2*24*3600,))
115                 for row in rows:
116                         pcdatum,sql,param = row
117                         datum=str(time.strftime("%d.%m.%y %H:%M:%S ", (time.localtime(pcdatum))))
118                         f.write( datum +"\t" + sql + "\t\t" + param+ "\n")
119
120                 f.close()