Skip to content
Snippets Groups Projects
Commit 95f6a6a6 authored by nimrod's avatar nimrod
Browse files

- Correcting warnings generated by running flake8.

parent fe0c4929
No related branches found
No related tags found
No related merge requests found
#!/usr/bin/env python
from fabric.api import task, local, settings
@task
def publish():
local('git dch -R')
......@@ -10,10 +11,12 @@ def publish ():
local('''fab -f $REPREPRO_BASE_DIR/fabfile.py publish''')
clean()
@task
def build():
local('''dpkg-buildpackage -us -uc''')
@task
def clean():
with settings(warn_only=True):
......@@ -23,6 +26,7 @@ def clean ():
debian/dcpman debian/files''')
local('''rm fabfile.pyc''')
@task
def push():
local('''git push --all gitdaemon''')
......@@ -8,18 +8,20 @@ from xml.dom.minidom import parse
import sys
import vlc
class Asset(object):
'''A simple asset that's part of whole DCP package.'''
def verifySize(self):
'''verify that the size of the file is correct, if present.'''
try:
return exists (self.fullpath) and stat (self.fullpath).st_size == self.size
return exists(self.fullpath) and stat(self.fullpath).st_size ==\
self.size
except AttributeError:
return True
def verifyHash(self):
'''verify that the hash is correct, if present.'''
if hasattr (self, 'hash') == False:
if not hasattr(self, 'hash'):
return True
# from os import stat
# try:
......@@ -40,7 +42,7 @@ class Asset (object):
'''Copies the file to the destination directory and verifies the hash
during.'''
newfilepath = destination + '/' + self.filename
if hasattr (self, 'hash') == False:
if not hasattr(self, 'hash'):
copyfile(self.fullpath, newfilepath)
self.fullpath = newfilepath
self.rootpath = destination
......@@ -67,7 +69,7 @@ class Asset (object):
media.parse()
self.duration = media.get_duration()
def __init__(self, rootpath, filename, id=None, hash=None, size=None,\
def __init__(self, rootpath, filename, id=None, hash=None, size=None,
packinglist=False, type=None):
'''Initialize an asset, has to have a filename and path.'''
self.rootpath = rootpath
......@@ -75,13 +77,13 @@ class Asset (object):
filename = filename[8:]
self.filename = filename
self.fullpath = rootpath + '/' + filename
if id != None:
if id is not None:
self.id = id
if hash != None:
if hash is not None:
self.hash = hash
if size != None:
if size is not None:
self.size = size
if type != None:
if type is not None:
self.type = type
self.packinglist = packinglist
......@@ -93,24 +95,21 @@ class DCP:
the correct hash.'''
for asset in self.assets:
try:
if asset.verifySize () == False:
if not asset.verifySize():
return False
except BaseException as e:
raise RuntimeError ('Failed size comparisement for ' +\
raise RuntimeError('Failed size comparisement for ' +
asset.filename) from e
#Sort the assets by size before calculating hashes, for performance.
def sortkey(x):
try:
return x.size
except AttributeError:
return 0
self.assets.sort (key=sortkey)
'''Sort the assets by size before calculating hashes, for
performance.'''
self.assets.sort(key=lambda x: try: return x.size except
AttributeError: return 0)
for asset in self.assets:
try:
if asset.verifyHash () == False:
if not asset.verifyHash():
return False
except BaseException as e:
raise RuntimeError ('Failed hash calculation for ' +\
raise RuntimeError('Failed hash calculation for ' +
asset.filename) from e
return True
......@@ -130,13 +129,16 @@ class DCP:
for element in assetmap:
id = element.getElementsByTagName('Id')[0].firstChild.data
id = id.split(':')[-1]
filename = element.getElementsByTagName ('Path')[0].firstChild.data
packinglist = len (element.getElementsByTagName ('PackingList')) > 0
filename = element.getElementsByTagName('Path')[0]\
.firstChild.data
packinglist = len(element.getElementsByTagName
('PackingList')) > 0
if packinglist:
self.assets.append (Asset (self.directory, filename,\
id=id, packinglist=packinglist, type='text/xml'))
self.assets.append(Asset(self.directory, filename,
id=id, packinglist=packinglist,
type='text/xml'))
else:
self.assets.append (Asset (self.directory, filename,\
self.assets.append(Asset(self.directory, filename,
id=id, packinglist=packinglist))
except BaseException as e:
raise RuntimeError('Failed to parse assetmap file') from e
......@@ -148,7 +150,7 @@ class DCP:
elif 'VOLINDEX' in listdir(self.directory):
filename = 'VOLINDEX'
else:
#raise RuntimeError ('Couldn\'t find volindex file')
'''raise RuntimeError('Couldn\'t find volindex file')'''
return
self.assets.append(Asset(self.directory, filename, type='text/xml'))
......@@ -157,21 +159,25 @@ class DCP:
try:
pkls = (parse(x.fullpath) for x in self.assets if x.packinglist)
for pkl in pkls:
if hasattr (self, 'signed') == False:
if not hasattr(self, 'signed'):
self.signed = len(pkl.getElementsByTagName('Signer')) > 0
try:
if hasattr (self, 'name') == False:
self.name = pkl.getElementsByTagName\
('AnnotationText')[0].firstChild.data.strip()
if not hasattr(self, 'name'):
self.name = pkl\
.getElementsByTagName('AnnotationText')[0]\
.firstChild.data.strip()
except:
pass
for element in pkl.getElementsByTagName('Asset'):
id = element.getElementsByTagName('Id')[0].firstChild.data
id = id.split(':')[-1]
hash = element.getElementsByTagName ('Hash')[0].firstChild.data
type = element.getElementsByTagName ('Type')[0].firstChild.data
size = int(element.getElementsByTagName ('Size')[0].firstChild.data)
asset = [x for x in self.assets if hasattr (x, 'id') and\
hash = element.getElementsByTagName('Hash')[0]\
.firstChild.data
type = element.getElementsByTagName('Type')[0]\
.firstChild.data
size = int(element.getElementsByTagName('Size')[0]
.firstChild.data)
asset = [x for x in self.assets if hasattr(x, 'id') and
x.id == id][0]
asset.hash = hash
asset.size = size
......@@ -183,15 +189,16 @@ class DCP:
def _find_cpl(self):
'''Goes through the xml files, finds the CPL and extracts the data from
it.'''
for asset in [x for x in self.assets if hasattr (x, 'type') and x.type.find ('xml') > -1]:
elements = (parse (asset.fullpath)).getElementsByTagName \
('CompositionPlaylist')
for asset in [x for x in self.assets if hasattr(x, 'type') and x
.type.find('xml') > -1]:
elements = (parse(asset.fullpath))\
.getElementsByTagName('CompositionPlaylist')
if len(elements) > 0:
try:
self.cpl_id = elements[0].getElementsByTagName \
('Id')[0].firstChild.data
self.cpl_date = elements[0].getElementsByTagName \
('IssueDate')[0].firstChild.data
self.cpl_id = elements[0]\
.getElementsByTagName('Id')[0].firstChild.data
self.cpl_date = elements[0]\
.getElementsByTagName('IssueDate')[0].firstChild.data
except:
pass
......@@ -202,7 +209,7 @@ class DCP:
self._add_volindex()
self._parse_packinglist()
try:
self.duration = max ([x.duration for x in self.assets if hasattr\
self.duration = max([x.duration for x in self.assets if hasattr
(x, 'duration')])
except:
self.duration = 'Unknown'
......@@ -213,30 +220,27 @@ class DCP:
for asset in self.assets:
totalsize = stat(asset.fullpath).st_size
try:
if asset.verifySize () == False:
if not asset.verifySize():
return False
except BaseException as e:
raise RuntimeError ('Failed size comparisement for ' +\
asset.filename) from e
freespace = statvfs (destination).f_bavail * statvfs\
(destination).f_bsize
raise RuntimeError('Failed size comparisement for '
+ asset.filename) from e
freespace = statvfs(destination).f_bavail\
* statvfs(destination).f_bsize
if freespace < totalsize:
return False
#Sort the assets by size before calculating hashes, for performance.
def sortkey(x):
try:
return x.size
except AttributeError:
return 0
self.assets.sort (key=sortkey)
'''Sort the assets by size before calculating hashes, for
performance.'''
self.assets.sort(key=lambda x: try: return x.size except
AttributeError: return 0)
newdirectory = destination + '/' + basename(self.directory)
mkdir(newdirectory)
for asset in self.assets:
try:
if asset.copyAndVerify (newdirectory) == False:
if not asset.copyAndVerify(newdirectory):
return False
except BaseException as e:
raise RuntimeError ('Failed hash calculation for ' +\
raise RuntimeError('Failed hash calculation for ' +
asset.filename) from e
self.directory = newdirectory
return True
......
......@@ -5,8 +5,9 @@ try:
from dcpman.dcp import DCP
except:
from dcp import DCP
'''autogenerated file from Qt Designer to setup the window.'''
try:
from dcpman import ui #autogenerated file from Qt Designer to setup the window
from dcpman import ui
except:
import ui
import sys
......@@ -14,6 +15,7 @@ from os.path import basename
import syslog
import time
class verifyThread(QtCore.QThread):
'''A seperate thread to verify the DCP(IO intensive).
......@@ -27,11 +29,11 @@ class verifyThread (QtCore.QThread):
result = dcp.verify()
if result:
window.verifyLine.setText('OK')
syslog.syslog (syslog.LOG_INFO, time.ctime () +\
syslog.syslog(syslog.LOG_INFO, time.ctime() +
directoryname + ' verification succeeded.')
else:
window.verifyLine.setText('Corrupted!')
syslog.syslog (syslog.LOG_INFO, time.ctime () +\
syslog.syslog(syslog.LOG_INFO, time.ctime() +
directoryname + ' verification failed.')
except BaseException as exception:
window.verifyLine.setText(str(exception))
......@@ -53,7 +55,7 @@ if __name__ == '__main__':
app = QtGui.QApplication(sys.argv)
icon = QtGui.QIcon('/usr/share/icons/oxygen/16x16/apps/kmplayer.png')
app.setWindowIcon(icon)
directory = QtGui.QFileDialog.getExistingDirectory ( \
directory = QtGui.QFileDialog.getExistingDirectory(
caption='Please select the location of the DCP')
directoryname = basename(directory)
mainwindow = QtGui.QMainWindow()
......@@ -64,19 +66,19 @@ if __name__ == '__main__':
dcp = DCP(directory)
try:
window.nameLine.setText(dcp.name)
syslog.syslog (syslog.LOG_INFO, time.ctime () + directoryname +\
syslog.syslog(syslog.LOG_INFO, time.ctime() + directoryname +
' parsed.')
except AttributeError as exception:
window.nameLine.setText(basename(directory))
syslog.syslog (syslog.LOG_INFO, time.ctime () + directoryname +\
syslog.syslog(syslog.LOG_INFO, time.ctime() + directoryname +
exception)
if dcp.signed:
syslog.syslog (syslog.LOG_INFO, time.ctime () + directoryname +\
syslog.syslog(syslog.LOG_INFO, time.ctime() + directoryname +
' is signed.')
else:
syslog.syslog (syslog.LOG_INFO, time.ctime () + directoryname +\
syslog.syslog(syslog.LOG_INFO, time.ctime() + directoryname +
' is not sigend.')
syslog.syslog (syslog.LOG_INFO, time.ctime () + directoryname +\
syslog.syslog(syslog.LOG_INFO, time.ctime() + directoryname +
' duration is ' + str(dcp.duration))
if dcp.signed and dcp.duration == 0:
window.encryptedLine.setText('Most likely')
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment