Annotation of OSA_system2/OSAS_helpers.py, revision 1.1
1.1 ! dwinter 1: # hilfsfunktionen
! 2: import os.path
! 3: from types import *
! 4: import xml.dom.minidom
! 5:
! 6: OSASObjectTypes=['OSAS_metaDataFile','OSAS_dir','OSAS_file','OSAS_imageFolder']
! 7: OSASExcludedFiles=['TheVolumeSettingsFolder','TheFindByContentFolder']
! 8:
! 9: def getText(nodelist):
! 10: """gibt text aus nodelist"""
! 11: rc = ""
! 12: for node in nodelist:
! 13: if node.nodeType == node.TEXT_NODE:
! 14: rc = rc + node.data
! 15: return rc
! 16:
! 17: def getMetaFile(path):
! 18: """get index.meta and translate it to HTML"""
! 19: html=[]
! 20: if not os.path.exists(path+"/index.meta"):
! 21:
! 22: return "NO_METADATA"
! 23: else:
! 24: f = os.popen("cat "+path+"/index.meta","r")
! 25: lines = f.read()
! 26: dom = xml.dom.minidom.parseString(lines)
! 27: try:
! 28: name=getText(dom.getElementsByTagName("name")[0].childNodes)
! 29: except:
! 30: name="NOT_DEFINED!!!"
! 31: try:
! 32: creator=getText(dom.getElementsByTagName("creator")[0].childNodes)
! 33: except:
! 34: creator="NOT_DEFINED!!!"
! 35:
! 36: try:
! 37: creation_date=getText(dom.getElementsByTagName("archive-creation-date")[0].childNodes)
! 38: except:
! 39: creation_date="NOT_DEFINED!!!"
! 40:
! 41: try:
! 42: description=getText(dom.getElementsByTagName("description")[0].childNodes)
! 43: except:
! 44: description="NOT_DEFINED!!!"
! 45:
! 46: try:
! 47: type=getText(dom.getElementsByTagName("content-type")[0].childNodes)
! 48: except:
! 49: type=""
! 50: if type=="scanned document":
! 51: html="<h3>Document: "+name+"</h3>"
! 52: elif type=="folder":
! 53: html="<h3>Folder: "+name+"</h3>"
! 54: else:
! 55: html="<h3>Document: "+name+"</h3>"
! 56:
! 57: html=html+"<p><i>created by: "+creator+" at: "+creation_date+"</i></p>"
! 58: html=html+"<h4>Description</h4><p>"+description+"</p>"
! 59: try:
! 60: bib = dom.getElementsByTagName("meta")[0].getElementsByTagName("bib")[0]
! 61: if bib.attributes.has_key('type'):
! 62: html=html+"<h4>Info ("+bib.attributes['type'].value+")</h4>"
! 63: else:
! 64: html=html+"<h4>Info</h4>"
! 65: html=html+getBib(bib.childNodes)
! 66:
! 67: except:
! 68: """none"""
! 69:
! 70: # html=html.encode('utf-8','replace')+getBib(bib.childNodes).encode('utf-8','replace')
! 71:
! 72: return html.encode('utf-8')
! 73:
! 74: def getBib(nodelist):
! 75: """ translate bibliographical entries """
! 76: rc= "<table border='0'>"
! 77:
! 78: for node in nodelist:
! 79:
! 80: if node.nodeType == node.ELEMENT_NODE:
! 81: """nothing"""
! 82:
! 83: rc = rc+"<tr><td valign='right'>"+str(node.nodeName)+":</td><td> "+getText(node.childNodes)+"</td></tr>"
! 84:
! 85: #print rc
! 86: return rc+"</table>"
! 87:
! 88: def getPropertyOfDirs(path,property):
! 89: """gibt Eigenschaften der directorys gemaess Index.metas file in path aus
! 90: @param path: Pfad in dem das index.meta liegt
! 91: @param propery: Property die ausgegebenwerden soll
! 92: @return: Hash mit key name des Directories and Value von property, None if error.
! 93: """
! 94: ret={}
! 95: try:
! 96: dom=xml.dom.minidom.parse(os.path.split(path)[0]+"/index.meta")
! 97: for node in dom.getElementsByTagName("dir"):
! 98:
! 99: property= getText(node.getElementsByTagName("content-type")[0].childNodes)
! 100: dirName=getText(node.getElementsByTagName("name")[0].childNodes)
! 101: ret[dirName]=property
! 102: return ret
! 103: except:
! 104:
! 105: return ret
! 106:
! 107: def dirHasProperty(path,propertyName,propertyValue):
! 108: """gibt 1 zurück falls path hat propertyName und properName=propertyValue
! 109: @param propertyName:Property von path in index.meta des parent folders von path
! 110: @param propertyValue:Wert der Property
! 111: @param path: Pfad der getestet werden soll
! 112: """
! 113: if getPropertyOfDirs(os.path.split(path)[0],propertyName).get(os.path.split(path)[1],None)==propertyValue:
! 114: return 1
! 115: else:
! 116: return 0
! 117:
! 118: def isImageFolder(path):
! 119: """check if folder contains images without metadata or with metadata"""
! 120: # metadaten ergeben imagefolder
! 121: if dirHasProperty(path,'content-type','images'):
! 122: return 1
! 123:
! 124: #sonst rate ob folder images enthaelten durch test nach suffix
! 125: try:
! 126: dir=os.listdir(path)
! 127:
! 128: imagesuffixes=['.gif','.jpg','.jpeg','.png','.tiff','.tif']
! 129: ret=""
! 130: for a in dir:
! 131:
! 132: suffix=os.path.splitext(a)[1].lower()
! 133:
! 134: if suffix in imagesuffixes:
! 135: return 1
! 136:
! 137: return 0
! 138:
! 139: except:
! 140: return 0
! 141:
! 142: def checkOSASFileType(object):
! 143: """checke filetype
! 144: nicht erkannte type auf werden auf none gesetzt
! 145: """
! 146: if os.path.split(object)[1][0]=="." or os.path.split(object)[1] in OSASExcludedFiles:
! 147: return None
! 148: elif isImageFolder(object):
! 149: return 'OSAS_imageFolder'
! 150: elif os.path.split(object)[1]=="index.meta":
! 151: return 'OSAS_metaDataFile'
! 152: elif os.path.isdir(object):
! 153: return 'OSAS_dir'
! 154: elif os.path.isfile(object):
! 155: return 'OSAS_file'
! 156:
! 157: def toList(fields):
! 158: """Einzelfeld in Liste umwandeln
! 159: @param fields: String oder Array
! 160: @return: gibt liste zurueck
! 161:
! 162: """
! 163: if type(fields)==StringType:
! 164: return [fields]
! 165: else:
! 166: return fields
! 167:
! 168:
! 169: def localDate():
! 170: """gives formatted local date"""
! 171: return strftime("%d.%m.%Y",localtime())
! 172:
! 173:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>