Advertisement
Guest User

Untitled

a guest
May 31st, 2016
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.83 KB | None | 0 0
  1. from sys import argv, exit
  2. from os.path import join, realpath, dirname
  3. from xml.etree import cElementTree as et
  4.  
  5. from PyQt5.QtCore import pyqtSignal, pyqtSlot, QObject, QRunnable, QThreadPool
  6. from PyQt5.QtWidgets import QApplication, QMainWindow
  7. from PyQt5.uic import loadUi
  8.  
  9. from pysftp import Connection
  10.  
  11.  
  12. class Upload(QObject, QRunnable):
  13.  
  14. finished = pyqtSignal()
  15.  
  16. def __init__(self, host, user, password, holes, *args, **kwargs):
  17. super().__init__(*args, **kwargs)
  18.  
  19. self.host = host
  20. self.user = user
  21. self.password = password
  22. self.holes = holes
  23.  
  24. def run(self):
  25. root = et.Element('holes')
  26. for hole in self.holes:
  27. holeElem = et.SubElement(root, 'hole')
  28. idElem = et.SubElement(holeElem, 'id')
  29. idElem.text = hole
  30. tree = et.ElementTree(root)
  31. tree.write('/tmp/holes.xml')
  32.  
  33. with Connection(self.host, self.user, self.password) as sftp:
  34. with sftp.cd('/home/estan'):
  35. sftp.put('/tmp/holes.xml')
  36.  
  37. self.finished.emit()
  38.  
  39.  
  40. class HoleConfigurator(QMainWindow):
  41.  
  42. def __init__(self, *args, **kwargs):
  43. super().__init__(*args, **kwargs)
  44.  
  45. loadUi(join(dirname(realpath(__file__)), 'configure_holes.ui'), self)
  46.  
  47. def on_saveButton_clicked(self):
  48. print('starting upload')
  49. upload = Upload(
  50. self.hostEdit.text(),
  51. self.userEdit.text(),
  52. self.passwordEdit.text(), ['A', 'B', 'C']
  53. )
  54. upload.finished.connect(self.uploadFinished)
  55. QThreadPool.globalInstance().start(upload)
  56.  
  57. def uploadFinished(self):
  58. print('upload finished')
  59.  
  60.  
  61. app = None
  62.  
  63.  
  64. def main():
  65. global app
  66.  
  67. app = QApplication(argv)
  68.  
  69. configurator = HoleConfigurator()
  70. configurator.show()
  71.  
  72. exit(app.exec_())
  73.  
  74.  
  75. if __name__ == '__main__':
  76. main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement