Import: Show progress bar during bulk import

This commit is contained in:
gimick
2010-09-04 12:30:43 +01:00
parent 26eca40b31
commit 3fd2b2f838
3 changed files with 59 additions and 6 deletions
+52 -1
View File
@@ -70,12 +70,13 @@ else:
psycopg2.extensions.register_type(psycopg2.extensions.UNICODE)
class Importer:
def __init__(self, caller, settings, config, sql = None):
def __init__(self, caller, settings, config, parent, sql = None):
"""Constructor"""
self.settings = settings
self.caller = caller
self.config = config
self.sql = sql
self.parent = parent
#log = Configuration.get_logger("logging.conf", "importer", log_dir=self.config.dir_log)
self.filelist = {}
@@ -301,7 +302,16 @@ class Importer:
totpartial = 0
toterrors = 0
tottime = 0
progresscount = 0
progressgoal = len(self.filelist)
ProgressDialog = ProgressBar(self.parent)
for file in self.filelist:
progresscount += 1
ProgressDialog.progress_update(progresscount,progressgoal)
(stored, duplicates, partial, errors, ttime) = self.import_file_dict(db, file
,self.filelist[file][0], self.filelist[file][1], q)
totstored += stored
@@ -313,6 +323,8 @@ class Importer:
print _("sending finish message queue length ="), q.qsize()
db.send_finish_msg(q)
del ProgressDialog
return (totstored, totdups, totpartial, toterrors)
# end def importFiles
@@ -527,6 +539,45 @@ class Importer:
logfile.write(str(s) + "\n")
logfile.write("\n")
logfile.close()
class ProgressBar:
def __del__(self):
self.progress.destroy()
def progress_update(self, fraction, sum):
progresspercent = float(fraction) / (float(sum) + 1.0)
x = sometext.center(100)
self.pbar.set_fraction(progresspercent)
self.pbar.set_text(str(fraction) + " / " + str(sum))
def __init__(self, parent):
self.progress = gtk.Window(gtk.WINDOW_TOPLEVEL)
self.progress.set_resizable(False)
self.progress.set_modal(True)
self.progress.set_transient_for(parent)
self.progress.set_decorated(False)
vbox = gtk.VBox(False, 5)
vbox.set_border_width(10)
self.progress.add(vbox)
vbox.show()
align = gtk.Alignment(0.5, 0.5, 0, 0)
vbox.pack_start(align, True, True, 2)
align.show()
self.pbar = gtk.ProgressBar()
align.add(self.pbar)
self.pbar.show()
self.progress.show()
if __name__ == "__main__":
print _("CLI for fpdb_import is now available as CliFpdb.py")