X-Git-Url: https://vcs.maemo.org/git/?a=blobdiff_plain;f=src%2Fbackup%2Fpcsbackupxml.py;fp=src%2Fbackup%2Fpcsbackupxml.py;h=0bf3905c3f19960ea230eec4131cff6cd93802a0;hb=256d6db84797e58f32185f042154a7c0fc54163e;hp=0000000000000000000000000000000000000000;hpb=7d8224c9f08712280a22af40325d59a19f4fb1e1;p=tablet-suite diff --git a/src/backup/pcsbackupxml.py b/src/backup/pcsbackupxml.py new file mode 100644 index 0000000..0bf3905 --- /dev/null +++ b/src/backup/pcsbackupxml.py @@ -0,0 +1,87 @@ +''' +@author: Nicholas Alexander + +Created on 07/07/2009 + +Module with functions used to create backup metadata xml file with same format +as osso-backup metadata. + +''' +import os + +import xml.dom.minidom + +from backup.pcsbackuputils import getSize +from pcsdevicemanager import PcsDeviceManager + + +def createXml(backup_info, filesByCategory, host_ip): + doc = xml.dom.minidom.Document() + root = doc.createElement("backup-metadata") + doc.appendChild(root) + _appendSizeNode(backup_info, doc, root) + _appendFilesNumberNode(backup_info, doc, root) + _appendTimeNode(backup_info, doc, root) + _appendProtectedNode(doc, root) + _appendDeviceInfoNode(doc, root, host_ip) + backupFullPath = os.path.join(backup_info.getPath(), backup_info.getName()) + _appendCategoriesNode(doc, root, filesByCategory, backupFullPath) + metadata_path = os.path.join(backupFullPath, "backup.metadata") + file = open(metadata_path, "w") + doc.writexml(file) + file.close() + + + +def _appendSizeNode(backupInfo, document, node): + sizeNode = document.createElement("size") + size = document.createTextNode(str(backupInfo.getSize())) + sizeNode.appendChild(size) + node.appendChild(sizeNode) + +def _appendFilesNumberNode(backupInfo, document, node): + filesNode = document.createElement("number-of-files") + files = document.createTextNode(str(backupInfo.getFilesNumber())) + filesNode.appendChild(files) + node.appendChild(filesNode) + +def _appendTimeNode(backupInfo, document, node): + timeNode = document.createElement("timestamp") + time = document.createTextNode(str(int(backupInfo.getTime()))) + timeNode.appendChild(time) + node.appendChild(timeNode) + +def _appendProtectedNode(document, node): + protectedNode = document.createElement("protected") + protected = document.createTextNode("false") + protectedNode.appendChild(protected) + node.appendChild(protectedNode) + +def _appendDeviceInfoNode(document, node, hostIp): + deviceManager = PcsDeviceManager() + deviceManager.loadDevices() + device = deviceManager.getDevice(hostIp) + versionNode = document.createElement("device-version") + version = document.createTextNode(device.ossoBackup) + versionNode.appendChild(version) + node.appendChild(versionNode) + +def _appendCategoriesNode(document, node, filesByCategory, backupPath): + categories = document.createElement("categories") + for category in filesByCategory.keys(): + categoryPath = os.path.join(backupPath, "%s.zip" % category) + size = getSize(categoryPath) + if size == False: + continue + categoryNode = document.createElement("%s" % category) + categorySize = document.createElement("size") + categoryFiles = document.createElement("number-of-files") + filesText = document.createTextNode(str(filesByCategory[category])) + sizeText = document.createTextNode(str(size)) + categorySize.appendChild(sizeText) + categoryFiles.appendChild(filesText) + categoryNode.appendChild(categorySize) + categoryNode.appendChild(categoryFiles) + categories.appendChild(categoryNode) + node.appendChild(categories) + \ No newline at end of file