aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorpapoteur-mga <yves.brungard_git@gadz.org>2014-08-31 10:09:13 +0200
committerpapoteur-mga <yves.brungard_git@gadz.org>2014-08-31 10:09:13 +0200
commitfa0646a518068b3eadd1ec4a6e50c86d0864cb0a (patch)
tree6da615457e43a79ddde5c0fbd565ab2166ad8261
parentb769f65ac1a1dc4a229b159e39887e8e0dc33303 (diff)
downloadMageiaSync-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.pycbin2881 -> 0 bytes
-rw-r--r--lib/mageiaSyncExt.py93
-rw-r--r--lib/mageiaSyncExt.pycbin8531 -> 0 bytes
-rw-r--r--lib/mageiaSyncUI.py10
-rw-r--r--lib/mageiaSyncUI.pycbin5541 -> 0 bytes
-rw-r--r--lib/mageiaSyncUI.ui13
-rw-r--r--lib/mageiasync.py35
7 files changed, 98 insertions, 53 deletions
diff --git a/lib/mageiaSyncDBrename.pyc b/lib/mageiaSyncDBrename.pyc
deleted file mode 100644
index 170c640..0000000
--- a/lib/mageiaSyncDBrename.pyc
+++ /dev/null
Binary files differ
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
deleted file mode 100644
index 72a9f34..0000000
--- a/lib/mageiaSyncExt.pyc
+++ /dev/null
Binary files differ
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
deleted file mode 100644
index 710aed8..0000000
--- a/lib/mageiaSyncUI.pyc
+++ /dev/null
Binary files differ
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()