home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2007 September / PCWSEP07.iso / Software / Linux / Linux Mint 3.0 Light / LinuxMint-3.0-Light.iso / casper / filesystem.squashfs / usr / bin / hwdb-send < prev    next >
Encoding:
Text File  |  2007-04-25  |  3.1 KB  |  111 lines

  1. #!/usr/bin/python
  2.  
  3. import sys
  4. import os
  5. import gtk
  6. import gtk.glade
  7. import gobject
  8. import urllib2
  9.  
  10. from gettext import gettext as _
  11. import gettext
  12. import locale
  13.  
  14. from hwdb_client import Constants
  15. from hwdb_client import ClientForm
  16.  
  17. localesApp="hwdb-client"
  18. localesDir="/usr/share/locale"
  19. locale.setlocale(locale.LC_ALL, '')
  20. gettext.bindtextdomain(localesApp, localesDir)
  21. gettext.textdomain(localesApp)
  22.  
  23. tree=gtk.glade.XML (Constants.DATADIR + "/send.glade","window1","hwdb-client")
  24. timeout = 10
  25. server = 'hwdb.ubuntu.com'
  26.  
  27. win = tree.get_widget("window1")
  28. win.set_icon_from_file(Constants.DATADIR + "/ubuntu_logo.png")
  29.  
  30. cancel = tree.get_widget("button1")
  31. ok = tree.get_widget("button2")
  32. pbar = tree.get_widget("progressbar1")
  33.  
  34. class Sender:
  35.     def __init__(self):
  36.     
  37.     cancel.connect("clicked", lambda w: gtk.main_quit())
  38.     win.connect("destroy", lambda w: gtk.main_quit())
  39.     ok.connect("clicked", lambda w: self.connect())
  40.     ok.grab_focus()
  41.     
  42.     win.set_position(gtk.WIN_POS_CENTER)
  43.     win.show_all()
  44.  
  45.     def main(self):
  46.             gtk.main()
  47.  
  48.     def connect(self):
  49.     pbar.set_text(_("Connecting to server (timeout 30sec)"))
  50.     while gtk.events_pending():
  51.         gtk.main_iteration(True)
  52.  
  53.     command = 'fping -a '+server+' 2>/dev/null'
  54.     home_path=os.environ["HOME"]
  55.     lock = open(home_path+'/.hwdb', 'w')
  56.     md5sum = []
  57.     ping = ''
  58.  
  59.     for line in os.popen(command):
  60.         ping = line
  61.     print ping
  62.  
  63.         for line in os.popen('md5sum /tmp/hwdb_data.xml'):
  64.         md5sum = line.split(' ')
  65.         os.system('mv /tmp/hwdb_data.xml /tmp/'+md5sum[0]+'.xml')
  66.     os.system('bzip2 /tmp/'+md5sum[0]+'.xml')
  67.     
  68.     if not ping:
  69.         dialog = gtk.MessageDialog(None, gtk.DIALOG_MODAL, gtk.MESSAGE_ERROR, gtk.BUTTONS_CLOSE,
  70.                       _("Can not connect to server, a copy of the data will get dropped\n to your desktop, please send it as mail\n attachment to hwdb@ubuntu.com"))
  71.         dialog.run()
  72.         dialog.destroy()
  73.         while gtk.events_pending():
  74.             gtk.main_iteration(True)
  75.         pbar.set_text("Copying to desktop")
  76.         os.system('mv /tmp/'+md5sum[0]+'.xml.bz2 ~/Desktop/')
  77.         self.timeout = gobject.timeout_add (50, lambda w: self.pulsator(), self)
  78.         self.timeout = gobject.timeout_add (500, lambda w: gtk.main_quit(), self)
  79.     else:
  80.        request = urllib2.Request('http://'+server+'/upload/')
  81.         response = urllib2.urlopen(request)
  82.         forms = ClientForm.ParseResponse(response)
  83.         form = forms[0]
  84.            form.add_file(open('/tmp/'+md5sum[0]+'.xml.bz2'), 'text/xml', md5sum[0]+'.xml.bz2')
  85.         response.close()
  86.        request2 = form.click()
  87.            response2 = urllib2.urlopen(request2)
  88.        self.transmit()
  89.     lock.write(md5sum[0])
  90.     lock.close()
  91.     os.system('rm /tmp/'+md5sum[0]+'.xml*')
  92.     
  93.     def pulsator(self):
  94.     pbar.pulse()
  95.     return True
  96.  
  97.     def transmit(self):
  98.        cancel.set_sensitive(False)
  99.     ok.set_sensitive(False)
  100.     pbar.set_text(_("Sending data..."))
  101.     self.timer = gobject.timeout_add (3000, lambda w: self.timings(), self)
  102.     
  103.     def timings(self):
  104.     self.timer = gobject.timeout_add (50, lambda w: self.pulsator(), self)
  105.     self.timeout = gobject.timeout_add (5000, lambda w: gtk.main_quit(), self)
  106.  
  107. if __name__ == "__main__":
  108.  
  109.     base = Sender()
  110.     base.main()
  111.