aboutsummaryrefslogtreecommitdiffstats
path: root/mageiaSync/mageiasync.py
diff options
context:
space:
mode:
authordaviddavid <geiger.david68210@gmail.com>2015-03-01 09:32:43 +0100
committerPapoteur <papoteur@mageialinux-online.org>2015-03-25 15:55:37 +0100
commitbd67303adf12e5be8f2caf1b18c842b5754272f6 (patch)
treec708d91f1d5ead61fe281bba0f6eb6f78e5b3930 /mageiaSync/mageiasync.py
parent67094f1b283010064e80fd22586b228c71d0b787 (diff)
downloadMageiaSync-bd67303adf12e5be8f2caf1b18c842b5754272f6.tar
MageiaSync-bd67303adf12e5be8f2caf1b18c842b5754272f6.tar.gz
MageiaSync-bd67303adf12e5be8f2caf1b18c842b5754272f6.tar.bz2
MageiaSync-bd67303adf12e5be8f2caf1b18c842b5754272f6.tar.xz
MageiaSync-bd67303adf12e5be8f2caf1b18c842b5754272f6.zip
New release 0.1.4
Sur la branche master Modifications qui seront validées : modifié : CHANGELOG Replace remote list with table view
Diffstat (limited to 'mageiaSync/mageiasync.py')
-rw-r--r--mageiaSync/mageiasync.py122
1 files changed, 77 insertions, 45 deletions
diff --git a/mageiaSync/mageiasync.py b/mageiaSync/mageiasync.py
index 9b9c6d4..8f77458 100644
--- a/mageiaSync/mageiasync.py
+++ b/mageiaSync/mageiasync.py
@@ -92,15 +92,23 @@ class IsosViewer(QMainWindow, mageiaSyncUI.Ui_mainWindow):
self.rsyncThread.checkSignal.connect(self.checks)
self.checkThreads=[] # A list of thread for each iso
- # Model for list view in a table
- self.model = QStandardItemModel(0, 6, self)
- headers=[self.tr("Directory"),self.tr("Name"),self.tr("Size"),self.tr("Date"),"SHA1","MD5"]
+ # Model for local list view in a table
+ self.model = QStandardItemModel(0, 5, self)
+ headers=[self.tr("Directory"),self.tr("Name"),self.tr("Size"),"SHA1","MD5"]
i=0
for label in headers:
self.model.setHeaderData(i, QtCore.Qt.Horizontal,label )
i+=1
-# settings for the list view
+# Model for remote list view in a table
+ self.modelRemote = QStandardItemModel(0, 4, self)
+ headers=[self.tr("Directory"),self.tr("Name"),self.tr("Size"),self.tr("Date")]
+ i=0
+ for label in headers:
+ self.modelRemote.setHeaderData(i, QtCore.Qt.Horizontal,label )
+ i+=1
+
+# settings for the local list view
self.localList.setModel(self.model)
self.localList.setColumnWidth(0,220)
self.localList.setColumnWidth(1,220)
@@ -109,31 +117,53 @@ class IsosViewer(QMainWindow, mageiaSyncUI.Ui_mainWindow):
# settings for local iso names management
self.localListNames=[]
- def multiSelect(self):
- # allows to select multiple lines in remote ISOs list
- self.listIsos.setSelectionMode(2) # MultiSelection
+# settings for the remote list view
+ self.listIsos.setModel(self.modelRemote)
+ self.listIsos.setColumnWidth(0,160)
+ self.listIsos.setColumnWidth(1,350)
+ self.listIsos.setColumnWidth(2,120)
+ self.listIsos.horizontalHeader().setStretchLastSection(True)
+ self.listIsos.setSelectionMode(2) # MultiSelection
+ self.listIsosNames=[]
- def add(self, iso):
+ def add(self, path,iso,isoSize,date):
# Add an remote ISO in list
- self.listIsos.addItem(iso)
+ itemPath=QStandardItem(path)
+ itemPath.setData(path,3) # Add tooltip
+ itemIso=QStandardItem(iso)
+ itemIso.setData(iso,3) # Add tooltip
+ if isoSize==0:
+ itemSize=QStandardItem('--')
+ else:
+ formatedSize=isoSize.replace(","," ")
+ itemSize=QStandardItem(formatedSize)
+ itemSize.setData(formatedSize,3) # Add tooltip
+ itemSize.setTextAlignment(QtCore.Qt.AlignVCenter|QtCore.Qt.AlignHCenter)
+
+ itemDate=QStandardItem(date)
+ itemDate.setData(date,3) # Add tooltip
+ itemDate.setTextAlignment(QtCore.Qt.AlignVCenter|QtCore.Qt.AlignHCenter)
+ self.modelRemote.appendRow([itemPath,itemIso,itemSize,itemDate,])
+ self.listIsosNames.append([path,iso])
def localAdd(self, path,iso,isoSize):
# Add an entry in local ISOs list, with indications about checking
itemPath=QStandardItem(path)
+ itemPath.setData(path,3) # Add tooltip
itemIso=QStandardItem(iso)
+ itemIso.setData(iso,3) # Add tooltip
if isoSize==0:
itemSize=QStandardItem('--')
else:
formatedSize='{:n}'.format(isoSize).replace(","," ")
itemSize=QStandardItem(formatedSize)
+ itemSize.setData(formatedSize,3) # Add tooltip
itemSize.setTextAlignment(QtCore.Qt.AlignVCenter|QtCore.Qt.AlignHCenter)
- itemDate=QStandardItem("--/--/--")
- itemDate.setTextAlignment(QtCore.Qt.AlignVCenter|QtCore.Qt.AlignHCenter)
itemCheck1=QStandardItem("--")
itemCheck1.setTextAlignment(QtCore.Qt.AlignVCenter|QtCore.Qt.AlignHCenter)
itemCheck5=QStandardItem("--")
itemCheck5.setTextAlignment(QtCore.Qt.AlignVCenter|QtCore.Qt.AlignHCenter)
- self.model.appendRow([itemPath,itemIso,itemSize,itemDate, itemCheck1, itemCheck5,])
+ self.model.appendRow([itemPath,itemIso,itemSize,itemCheck1, itemCheck5,])
self.localListNames.append([path,iso])
def setProgress(self, value):
@@ -153,7 +183,7 @@ class IsosViewer(QMainWindow, mageiaSyncUI.Ui_mainWindow):
self.timeRemaining.setTime(content)
def manualChecks(self):
- for iso in self.listIsos.selectedItems():
+ for iso in self.modelRemote.selectedItems():
path,name=iso.text().split('/')
try:
# Look for ISO in local list
@@ -178,7 +208,7 @@ class IsosViewer(QMainWindow, mageiaSyncUI.Ui_mainWindow):
isoIndex)
self.checkThreads[-1].md5Signal.connect(self.md5Check)
self.checkThreads[-1].sha1Signal.connect(self.sha1Check)
- self.checkThreads[-1].dateSignal.connect(self.dateCheck)
+# self.checkThreads[-1].dateSignal.connect(self.dateCheck)
self.checkThreads[-1].sizeFinalSignal.connect(self.sizeUpdate)
self.checkThreads[-1].checkStartSignal.connect(self.checkStart)
self.checkThreads[-1].start()
@@ -197,7 +227,7 @@ class IsosViewer(QMainWindow, mageiaSyncUI.Ui_mainWindow):
else:
val=self.tr("Failed")
row=check
- self.model.setData(self.model.index(row, 5, QtCore.QModelIndex()), val)
+ self.model.setData(self.model.index(row, 4, QtCore.QModelIndex()), val)
def sha1Check(self,check):
if check>=128:
@@ -206,7 +236,7 @@ class IsosViewer(QMainWindow, mageiaSyncUI.Ui_mainWindow):
else:
val=self.tr("Failed")
row=check
- self.model.setData(self.model.index(row, 4, QtCore.QModelIndex()), val)
+ self.model.setData(self.model.index(row, 3, QtCore.QModelIndex()), val)
def dateCheck(self,check):
if check>=128:
@@ -317,12 +347,12 @@ class IsosViewer(QMainWindow, mageiaSyncUI.Ui_mainWindow):
def selectAllIsos(self):
# Select or unselect the ISOs in remote list
if self.selectAllState :
- for i in range(self.listIsos.count()):
- self.listIsos.item(i).setSelected(True)
+ for i in range(self.modelRemote.count()):
+ self.modelRemote.item(i).setSelected(True)
self.selectAll.setText(self.tr("Unselect &All"))
else:
- for i in range(self.listIsos.count()):
- self.listIsos.item(i).setSelected(False)
+ for i in range(self.modelRemote.count()):
+ self.modelRemote.item(i).setSelected(False)
self.selectAll.setText(self.tr("Select &All"))
self.selectAllState=not self.selectAllState
@@ -340,7 +370,7 @@ class IsosViewer(QMainWindow, mageiaSyncUI.Ui_mainWindow):
# From the menu entry
self.lw = LogWindow()
self.lw.show()
- self.listIsos.clear()
+ self.modelRemote.removeRows(0,self.modelRemote.rowCount())
self.model.removeRows(0,self.model.rowCount())
if self.location == "" :
self.nameWithPath='rsync://'+self.user+'@bcd.mageia.org/isos/'+self.release+'/'
@@ -415,25 +445,29 @@ class IsosViewer(QMainWindow, mageiaSyncUI.Ui_mainWindow):
# Connect the button Stop
self.stop.clicked.connect(self.stopSync)
self.rsyncThread.params(self.password, self.bwl)
- for iso in self.listIsos.selectedItems():
- path,name=iso.text().split('/')
- try:
- # Look for ISO in local list
- item=self.model.findItems(name,QtCore.Qt.MatchExactly,1)[0]
- except:
- # Remote ISO is not yet in local directory. We add it in localList and create the directory
- self.localAdd(path,name,0)
- basedir=QtCore.QDir(self.destination)
- basedir.mkdir(path)
- item=self.model.findItems(name,QtCore.Qt.MatchExactly,1)[0]
- row=self.model.indexFromItem(item).row()
- if self.location == "" :
- self.nameWithPath='rsync://'+self.user+'@bcd.mageia.org/isos/'+self.release+'/'+path
- else:
- self.nameWithPath=self.location+path
- if (not str(path).endswith('/')):
- self.nameWithPath+='/'
- self.rsyncThread.setup(self.nameWithPath, self.destination+'/'+path+'/',row)
+ remoteRow=-1
+ for isoIndex in self.listIsos.selectionModel().selectedIndexes():
+ if remoteRow != isoIndex.row():
+ remoteRow = isoIndex.row()
+ path = self.model.data(self.model.index(remoteRow,0))
+ name = self.model.data(self.model.index(remoteRow,1))
+ try:
+ # Look for ISO in local list
+ item=self.model.findItems(name,QtCore.Qt.MatchExactly,1)[0]
+ except:
+ # Remote ISO is not yet in local directory. We add it in localList and create the directory
+ self.localAdd(path,name,0)
+ basedir=QtCore.QDir(self.destination)
+ basedir.mkdir(path)
+ item=self.model.findItems(name,QtCore.Qt.MatchExactly,1)[0]
+ row=self.model.indexFromItem(item).row()
+ if self.location == "" :
+ self.nameWithPath='rsync://'+self.user+'@bcd.mageia.org/isos/'+self.release+'/'+path
+ else:
+ self.nameWithPath=self.location+path
+ if (not str(path).endswith('/')):
+ self.nameWithPath+='/'
+ self.rsyncThread.setup(self.nameWithPath, self.destination+'/'+path+'/',row)
self.rsyncThread.start() # start the thread
# Pour les tests uniquement
#rsync://$user@bcd.mageia.org/isos/$release/
@@ -442,16 +476,15 @@ class IsosViewer(QMainWindow, mageiaSyncUI.Ui_mainWindow):
def closeFill(self,code):
if code==0: # list returned
list=self.fillList.getList()
- for iso in list:
- self.add(iso)
+ for size, date,longName in list:
+ path=longName.split('/')
+ self.add(path[0], path[-1], size,date)
elif code==1:
self.lvMessage(self.tr("Command rsync not found"))
elif code==2:
self.lvMessage(self.tr("Error in rsync parameters"))
elif code==3:
self.lvMessage(self.tr("Unknown error in rsync"))
- list=self.fillList.getList()
-
list=self.fillList.getLocal()
for path,iso,isoSize in list:
self.localAdd(path,iso, isoSize)
@@ -473,7 +506,6 @@ class IsosViewer(QMainWindow, mageiaSyncUI.Ui_mainWindow):
self.prefsInit()
# look for Isos list and add it to the isoSync list. Update preferences
self.updateList()
- self.multiSelect()
def close(self):
self.rsyncThread.stop()