Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from sys import argv, exit
- from os.path import join, realpath, dirname
- from xml.etree import cElementTree as et
- from PyQt5.QtCore import pyqtSignal, pyqtSlot, QObject, QRunnable, QThreadPool
- from PyQt5.QtWidgets import QApplication, QMainWindow
- from PyQt5.uic import loadUi
- from pysftp import Connection
- class Upload(QObject, QRunnable):
- finished = pyqtSignal()
- def __init__(self, host, user, password, holes, *args, **kwargs):
- super().__init__(*args, **kwargs)
- self.host = host
- self.user = user
- self.password = password
- self.holes = holes
- def run(self):
- root = et.Element('holes')
- for hole in self.holes:
- holeElem = et.SubElement(root, 'hole')
- idElem = et.SubElement(holeElem, 'id')
- idElem.text = hole
- tree = et.ElementTree(root)
- tree.write('/tmp/holes.xml')
- with Connection(self.host, self.user, self.password) as sftp:
- with sftp.cd('/home/estan'):
- sftp.put('/tmp/holes.xml')
- self.finished.emit()
- class HoleConfigurator(QMainWindow):
- def __init__(self, *args, **kwargs):
- super().__init__(*args, **kwargs)
- loadUi(join(dirname(realpath(__file__)), 'configure_holes.ui'), self)
- def on_saveButton_clicked(self):
- print('starting upload')
- upload = Upload(
- self.hostEdit.text(),
- self.userEdit.text(),
- self.passwordEdit.text(), ['A', 'B', 'C']
- )
- upload.finished.connect(self.uploadFinished)
- QThreadPool.globalInstance().start(upload)
- def uploadFinished(self):
- print('upload finished')
- app = None
- def main():
- global app
- app = QApplication(argv)
- configurator = HoleConfigurator()
- configurator.show()
- exit(app.exec_())
- if __name__ == '__main__':
- main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement