diff options
author | papoteur-mga <yves.brungard_git@gadz.org> | 2014-08-31 10:09:13 +0200 |
---|---|---|
committer | papoteur-mga <yves.brungard_git@gadz.org> | 2014-08-31 10:09:13 +0200 |
commit | fa0646a518068b3eadd1ec4a6e50c86d0864cb0a (patch) | |
tree | 6da615457e43a79ddde5c0fbd565ab2166ad8261 | |
parent | b769f65ac1a1dc4a229b159e39887e8e0dc33303 (diff) | |
download | MageiaSync-fa0646a518068b3eadd1ec4a6e50c86d0864cb0a.tar MageiaSync-fa0646a518068b3eadd1ec4a6e50c86d0864cb0a.tar.gz MageiaSync-fa0646a518068b3eadd1ec4a6e50c86d0864cb0a.tar.bz2 MageiaSync-fa0646a518068b3eadd1ec4a6e50c86d0864cb0a.tar.xz MageiaSync-fa0646a518068b3eadd1ec4a6e50c86d0864cb0a.zip |
Replace column Completion with local size information
Added DATE.txt check
-rw-r--r-- | lib/mageiaSyncDBrename.pyc | bin | 2881 -> 0 bytes | |||
-rw-r--r-- | lib/mageiaSyncExt.py | 93 | ||||
-rw-r--r-- | lib/mageiaSyncExt.pyc | bin | 8531 -> 0 bytes | |||
-rw-r--r-- | lib/mageiaSyncUI.py | 10 | ||||
-rw-r--r-- | lib/mageiaSyncUI.pyc | bin | 5541 -> 0 bytes | |||
-rw-r--r-- | lib/mageiaSyncUI.ui | 13 | ||||
-rw-r--r-- | lib/mageiasync.py | 35 |
7 files changed, 98 insertions, 53 deletions
diff --git a/lib/mageiaSyncDBrename.pyc b/lib/mageiaSyncDBrename.pyc Binary files differdeleted file mode 100644 index 170c640..0000000 --- a/lib/mageiaSyncDBrename.pyc +++ /dev/null diff --git a/lib/mageiaSyncExt.py b/lib/mageiaSyncExt.py index f22c1db..612dc04 100644 --- a/lib/mageiaSyncExt.py +++ b/lib/mageiaSyncExt.py @@ -8,13 +8,14 @@ Created on Sat Jul 12 21:42:56 2014 import re, os from subprocess import Popen, PIPE -from PyQt5 import QtCore +from PyQt5.QtCore import QDir, QFileInfo,pyqtSignal,QThread -class checkThread(QtCore.QThread): - md5Signal = QtCore.pyqtSignal(int) - sha1Signal= QtCore.pyqtSignal(int) - dateSignal=QtCore.pyqtSignal(int) - checkStartSignal=QtCore.pyqtSignal(int) +class checkThread(QThread): + md5Signal = pyqtSignal(int) + sha1Signal= pyqtSignal(int) + dateSignal=pyqtSignal(int) + sizeSignal=pyqtSignal(int,int) + checkStartSignal=pyqtSignal(int) def __init__(self, parent=None): super(checkThread, self).__init__(parent) @@ -45,18 +46,28 @@ class checkThread(QtCore.QThread): return False def processDate(self): -# import datetime as datetime -# try: -# dateFile=open(str(self.destination)+'/DATE.txt','r') -# except: -# return False -# refDate=dateFile.readline() -# info=os.path.getmtime(str(self.destination)+'/'+self.name) -# fileDate= (datetime.fromtimestamp(info)).strftime("%c") -# if (fileDate==refDate): -# return True -# else: - return False + import datetime as datetime + import time + import locale + locale.setlocale(locale.LC_ALL, 'C') + # Get and process the date from the file DATE.txt + try: + dateFile=open(str(self.destination)+'/'+self.path+'/DATE.txt','r') + except: + return False + refDate=dateFile.readline() + lits=re.split("\W+", refDate) + nums=re.findall("([0-9]+)", refDate) + refTime=re.findall("[0-9]*:[0-9]*:[0-9]*", refDate)[0] + refDay=eval(nums[0]) + refYear=eval(nums[-1]) + refMonth=time.strptime(lits[1], "%b").tm_mon + # Date of file + info=datetime.datetime.fromtimestamp(os.path.getmtime(str(self.destination)+'/'+self.path+'/'+self.name)) + if(refDay==info.day and refMonth==info.month and refYear==info.year and refTime==info.strftime("%H:%M:%S")): + return True + else: + return False def setup(self, destination, path,name,isoIndex): self.destination=destination @@ -65,6 +76,9 @@ class checkThread(QtCore.QThread): self.isoIndex=isoIndex def run(self): + signal=200+self.isoIndex + isoSize=QFileInfo(str(self.destination)+'/'+self.path+'/' +self.name).size() + self.sizeSignal.emit(signal, isoSize) signal=500+self.isoIndex self.checkStartSignal.emit(signal) checkMd5=self.processSum('md5') @@ -80,13 +94,14 @@ class checkThread(QtCore.QThread): self.quit() -class syncThread(QtCore.QThread): - progressSignal = QtCore.pyqtSignal(int) - speedSignal= QtCore.pyqtSignal(int) - endSignal=QtCore.pyqtSignal(int) - remainSignal=QtCore.pyqtSignal(str) - checkSignal=QtCore.pyqtSignal(int) - lvM=QtCore.pyqtSignal(str) +class syncThread(QThread): + progressSignal = pyqtSignal(int) + speedSignal= pyqtSignal(int) + endSignal=pyqtSignal(int) + remainSignal=pyqtSignal(str) + checkSignal=pyqtSignal(int) + sizeSignal=pyqtSignal(int) + lvM=pyqtSignal(str) def __init__(self, parent=None): super(syncThread, self).__init__(parent) @@ -103,13 +118,12 @@ class syncThread(QtCore.QThread): self.bwl=bwl # Bandwith limit def stop(self): - self.lvM.emit("Process rsync stopped") self.stopped=True try: self.process.terminate() + self.lvM.emit("Process rsync stopped") except: - print "Echec" - pass + self.lvM.emit("Process rsync already stopped") # Init progressbar and speed counter self.endSignal.emit(0) @@ -123,7 +137,6 @@ class syncThread(QtCore.QThread): commande=['rsync','-avHP',"--bwlimit="+str(self.bwl), iso['nameWithPath'], iso['destination']] else: commande=['rsync','-avHP', iso['nameWithPath'], iso['destination']] - print commande try: if self.password != "": envir = os.environ.copy() @@ -151,9 +164,12 @@ class syncThread(QtCore.QThread): speedK=re.findall("([0-9.]*)kB/s", buf) speedM=re.findall("([0-9.]*)MB/s", buf) remain=re.findall("[0-9]*:[0-9]*:[0-9]*",buf) + sizeB=re.findall("[1-9](?:\d{0,2})(?:,\d{3})*",buf) if len(progressL) != 0: progress= eval(progressL[0]) self.progressSignal.emit(progress) + if len(sizeB) != 0: + self.sizeSignal.emit(eval(sizeB[0].replace(",",""))) else: if (len(buf) !=0): self.lvM.emit(buf.rstrip()) @@ -176,6 +192,7 @@ class syncThread(QtCore.QThread): self.endSignal.emit(0) self.speedSignal.emit(0) self.progressSignal.emit(0) + self.sizeSignal.emit(0) self.stopped=False self.list=[] self.quit() @@ -198,9 +215,9 @@ def rename(directory,oldRelease,newRelease): return "Success" break -class findIsos(QtCore.QThread): - endSignal=QtCore.pyqtSignal(int) - lvM=QtCore.pyqtSignal(str) +class findIsos(QThread): + endSignal=pyqtSignal(int) + lvM=pyqtSignal(str) def __init__(self, parent=None): super(findIsos, self).__init__(parent) @@ -220,17 +237,19 @@ class findIsos(QtCore.QThread): def run(self): # Lists ISO files in local directory - root=QtCore.QDir(self.destination) - root.setFilter(QtCore.QDir.AllDirs|QtCore.QDir.NoDot|QtCore.QDir.NoDotDot) + root=QDir(self.destination) + root.setFilter(QDir.AllDirs|QDir.NoDot|QDir.NoDotDot) dirs=root.entryList() for dir in dirs: - sub=QtCore.QDir(self.destination+'/'+dir) + sub=QDir(self.destination+'/'+dir) sub.setNameFilters(["*.iso"]) - sub.setFilter(QtCore.QDir.Files) + sub.setFilter(QDir.Files) local=sub.entryList() if len(local)!=0: for iso in local: - self.localList.append([dir,iso]) + isoSize=QFileInfo(sub.absolutePath()+'/' +iso).size() + self.localList.append([dir,iso,isoSize]) + # List the remote directory commande = ['rsync', '-avHP', '--list-only',str(self.path)] try: if self.password != "": diff --git a/lib/mageiaSyncExt.pyc b/lib/mageiaSyncExt.pyc Binary files differdeleted file mode 100644 index 72a9f34..0000000 --- a/lib/mageiaSyncExt.pyc +++ /dev/null diff --git a/lib/mageiaSyncUI.py b/lib/mageiaSyncUI.py index 0241ecf..fed1972 100644 --- a/lib/mageiaSyncUI.py +++ b/lib/mageiaSyncUI.py @@ -2,7 +2,7 @@ # Form implementation generated from reading ui file 'mageiaSyncUI.ui' # -# Created: Tue Aug 26 07:24:25 2014 +# Created: Sat Aug 30 20:19:01 2014 # by: PyQt5 UI code generator 5.1.1 # # WARNING! All changes made in this file will be lost! @@ -12,7 +12,7 @@ from PyQt5 import QtCore, QtGui, QtWidgets class Ui_mainWindow(object): def setupUi(self, mainWindow): mainWindow.setObjectName("mainWindow") - mainWindow.resize(711, 512) + mainWindow.resize(862, 587) self.centralwidget = QtWidgets.QWidget(mainWindow) self.centralwidget.setObjectName("centralwidget") self.verticalLayout = QtWidgets.QVBoxLayout(self.centralwidget) @@ -54,6 +54,9 @@ class Ui_mainWindow(object): self.IprogressBar.setProperty("value", 24) self.IprogressBar.setObjectName("IprogressBar") self.horizontalLayout_2.addWidget(self.IprogressBar) + self.Lsize = QtWidgets.QLabel(self.centralwidget) + self.Lsize.setObjectName("Lsize") + self.horizontalLayout_2.addWidget(self.Lsize) self.speedLCD = QtWidgets.QLCDNumber(self.centralwidget) self.speedLCD.setObjectName("speedLCD") self.horizontalLayout_2.addWidget(self.speedLCD) @@ -92,7 +95,7 @@ class Ui_mainWindow(object): self.verticalLayout.addWidget(self.lvText) mainWindow.setCentralWidget(self.centralwidget) self.menubar = QtWidgets.QMenuBar(mainWindow) - self.menubar.setGeometry(QtCore.QRect(0, 0, 711, 19)) + self.menubar.setGeometry(QtCore.QRect(0, 0, 862, 19)) self.menubar.setObjectName("menubar") self.menuFile = QtWidgets.QMenu(self.menubar) self.menuFile.setLocale(QtCore.QLocale(QtCore.QLocale.English, QtCore.QLocale.UnitedStates)) @@ -129,6 +132,7 @@ class Ui_mainWindow(object): self.remoteDirLabel.setText(_translate("mainWindow", "Remote directory")) self.selectAll.setText(_translate("mainWindow", "Select All")) self.localDirLabel.setText(_translate("mainWindow", "Local directory:")) + self.Lsize.setText(_translate("mainWindow", "0 bytes")) self.label_2.setText(_translate("mainWindow", "kB/s")) self.label_3.setText(_translate("mainWindow", "Remaining:")) self.timeRemaining.setDisplayFormat(_translate("mainWindow", "H:mm:ss")) diff --git a/lib/mageiaSyncUI.pyc b/lib/mageiaSyncUI.pyc Binary files differdeleted file mode 100644 index 710aed8..0000000 --- a/lib/mageiaSyncUI.pyc +++ /dev/null diff --git a/lib/mageiaSyncUI.ui b/lib/mageiaSyncUI.ui index f3ca1df..a86d314 100644 --- a/lib/mageiaSyncUI.ui +++ b/lib/mageiaSyncUI.ui @@ -6,8 +6,8 @@ <rect> <x>0</x> <y>0</y> - <width>711</width> - <height>512</height> + <width>862</width> + <height>587</height> </rect> </property> <property name="windowTitle"> @@ -102,6 +102,13 @@ </widget> </item> <item> + <widget class="QLabel" name="Lsize"> + <property name="text"> + <string>0 bytes</string> + </property> + </widget> + </item> + <item> <widget class="QLCDNumber" name="speedLCD"/> </item> <item> @@ -187,7 +194,7 @@ <rect> <x>0</x> <y>0</y> - <width>711</width> + <width>862</width> <height>19</height> </rect> </property> diff --git a/lib/mageiasync.py b/lib/mageiasync.py index 013ba36..2e15151 100644 --- a/lib/mageiasync.py +++ b/lib/mageiasync.py @@ -77,6 +77,7 @@ class IsosViewer(QMainWindow, mageiaSyncUI.Ui_mainWindow): self.rsyncThread = mageiaSyncExt.syncThread(self) # create a thread to launch rsync self.rsyncThread.progressSignal.connect(self.setProgress) self.rsyncThread.speedSignal.connect(self.setSpeed) + self.rsyncThread.sizeSignal.connect(self.setSize) self.rsyncThread.remainSignal.connect(self.setRemain) self.rsyncThread.endSignal.connect(self.syncEnd) self.rsyncThread.lvM.connect(self.lvMessage) @@ -85,7 +86,7 @@ class IsosViewer(QMainWindow, mageiaSyncUI.Ui_mainWindow): # Model for list view in a table self.model = QStandardItemModel(0, 6, self) - headers=["Directory","Name","Completion","Date","SHA1","MD5"] + headers=["Directory","Name","Size","Date","SHA1","MD5"] i=0 for label in headers: self.model.setHeaderData(i, QtCore.Qt.Horizontal,label ) @@ -93,8 +94,8 @@ class IsosViewer(QMainWindow, mageiaSyncUI.Ui_mainWindow): # settings for the list view self.localList.setModel(self.model) - self.localList.setColumnWidth(0,250) - self.localList.setColumnWidth(1,250) + self.localList.setColumnWidth(0,220) + self.localList.setColumnWidth(1,220) self.localList.horizontalHeader().setStretchLastSection(True) # settings for local iso names management self.localListNames=[] @@ -107,19 +108,23 @@ class IsosViewer(QMainWindow, mageiaSyncUI.Ui_mainWindow): # Add an remote ISO in list self.listIsos.addItem(iso) - def localAdd(self, path,iso): + def localAdd(self, path,iso,isoSize): # Add an entry in local ISOs list, with indications about checking itemPath=QStandardItem(path) itemIso=QStandardItem(iso) - itemCompletion=QStandardItem("0%") - itemCompletion.setTextAlignment(QtCore.Qt.AlignVCenter|QtCore.Qt.AlignHCenter) + if isoSize==0: + itemSize=QStandardItem('--') + else: + formatedSize='{:n}'.format(isoSize) #.replace(","," ") + itemSize=QStandardItem(formatedSize) + 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,itemCompletion,itemDate, itemCheck1, itemCheck5,]) + self.model.appendRow([itemPath,itemIso,itemSize,itemDate, itemCheck1, itemCheck5,]) self.localListNames.append([path,iso]) def setProgress(self, value): @@ -129,6 +134,10 @@ class IsosViewer(QMainWindow, mageiaSyncUI.Ui_mainWindow): def setSpeed(self, value): # Update the speed field self.speedLCD.display(value) + + def setSize(self, value): + # Update the size field + self.Lsize.setText(str(value)+" bytes") def setRemain(self,remainTime): content=QtCore.QTime.fromString(remainTime,"h:mm:ss") @@ -143,6 +152,7 @@ class IsosViewer(QMainWindow, mageiaSyncUI.Ui_mainWindow): self.checkThreads[-1].md5Signal.connect(self.md5Check) self.checkThreads[-1].sha1Signal.connect(self.sha1Check) self.checkThreads[-1].dateSignal.connect(self.dateCheck) + self.checkThreads[-1].sizeSignal.connect(self.sizeUpdate) self.checkThreads[-1].checkStartSignal.connect(self.checkStart) self.checkThreads[-1].start() @@ -179,6 +189,11 @@ class IsosViewer(QMainWindow, mageiaSyncUI.Ui_mainWindow): val="Failed" row=check self.model.setData(self.model.index(row, 3, QtCore.QModelIndex()), val) + + def sizeUpdate(self,signal,isoSize): + col=(int)(signal/100) + row=signal-col*100 + self.model.setData(self.model.index(row, col, QtCore.QModelIndex()), '{:n}'.format(isoSize)) def syncEnd(self, rc): if rc==1: @@ -356,7 +371,7 @@ class IsosViewer(QMainWindow, mageiaSyncUI.Ui_mainWindow): 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) + self.localAdd(path,name,0) basedir=QtCore.QDir(self.destination) basedir.mkdir(path) item=self.model.findItems(name,QtCore.Qt.MatchExactly,1)[0] @@ -387,8 +402,8 @@ class IsosViewer(QMainWindow, mageiaSyncUI.Ui_mainWindow): list=self.fillList.getList() list=self.fillList.getLocal() - for path,iso in list: - self.localAdd(path,iso) + for path,iso,isoSize in list: + self.localAdd(path,iso, isoSize) self.fillList.quit() self.lw.hide() |