-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathdelete.py
More file actions
82 lines (78 loc) · 3.6 KB
/
Copy pathdelete.py
File metadata and controls
82 lines (78 loc) · 3.6 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
from PyQt5.QtWidgets import (QMessageBox, QApplication)
import os, paramiko
from local_transfer import getLocalFileList
import logging
from PyQt5.QtCore import Qt
logger = logging.getLogger('Delete file')
def remoteDelete(self, deleteFilePath):
errorMessage = QMessageBox()
errorMessage.setIcon(QMessageBox.Critical)
errorMessage.setWindowTitle("Deletion Error")
try:
client = paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
client.connect(self.hostname, username=self.username, password=self.password)
stdin, stdout, stderr = client.exec_command('rm ' + deleteFilePath)
client.close()
return True
except paramiko.ssh_exception.SSHException as e:
QApplication.restoreOverrideCursor()
errorMessage.setInformativeText(str(e))
logger.error(e)
errorMessage.exec_()
return False
except UnicodeDecodeError as e:
QApplication.restoreOverrideCursor()
errorMessage.setInformativeText(str(e))
logger.error(e)
errorMessage.exec_()
return False
def showDeleteFileSuccessMsg(self):
deleteFile_success_msg = QMessageBox()
deleteFile_success_msg.setWindowTitle("File deleted")
deleteFile_success_msg.setText("File deleted successfully!")
deleteFile_success_msg.setIcon(QMessageBox.Information)
deleteFile_success_msg.exec_()
def deleteFile(self):
if self.currentFile != "/":
deleteFile = self.currentFile
try:
deleteFileName = str(self.currentFile.text(0))
deleteFilePath = ""
if self.currentFileList == "Local":
deleteFilePath = self.currentLocalPath + "\\" + deleteFileName
elif self.currentFileList == "Remote":
deleteFilePath = self.currentRemotePath + "/" + deleteFileName
except AttributeError as e:
errorMessage = QMessageBox(QMessageBox.Critical, "File not selected", "No file selected to delete! Make sure to select a file first")
errorMessage.exec_()
return
confirmDelete = QMessageBox.question(self, "Confirm Action", "Are you sure you want to delete this file: " + deleteFilePath, QMessageBox.Yes | QMessageBox.No | QMessageBox.Cancel, QMessageBox.Cancel)
if confirmDelete == QMessageBox.Yes:
self.notificationLabel.setText("Loading...")
QApplication.setOverrideCursor(Qt.WaitCursor)
if deleteFile.statusTip(0) == "d":
QApplication.restoreOverrideCursor()
errorMessage = QMessageBox(QMessageBox.Critical, "Error", "Cannot delete folders! Only files can be deleted...")
errorMessage.exec_()
self.notificationLabel.setText("")
return
if self.currentFileList == "Remote":
if remoteDelete(self, deleteFilePath) == True:
QApplication.restoreOverrideCursor()
self.getRemoteFileList()
showDeleteFileSuccessMsg(self)
if self.currentFileList == "Local":
os.remove(deleteFilePath)
self.LocalFilesList.clear()
getLocalFileList(self, None, True)
QApplication.restoreOverrideCursor()
showDeleteFileSuccessMsg(self)
self.notificationLabel.setText("")
return
if confirmDelete == QMessageBox.No:
print("No clicked")
if confirmDelete == QMessageBox.Cancel:
print("Cancel")
QApplication.restoreOverrideCursor()
self.notificationLabel.setText("")