# hilfsfunktionen import os.path from types import * import xml.dom.minidom import zLOG OSASObjectTypes=['OSAS_metaDataFile','OSAS_dir','Osas_file','OSAS_imageFolder','OSAS_dir_archive','OSAS_file_archive','OSAS_videoFolder','OSAS_videoFile','OSAS_videoFolder'] OSASDirObjects=['OSAS_dir','OSAS_imageFolder',] OSASExcludedFiles=['TheVolumeSettingsFolder','TheFindByContentFolder'] def getText(nodelist): """gibt text aus nodelist""" rc = "" for node in nodelist: if node.nodeType == node.TEXT_NODE: rc = rc + node.data return rc def getMetaInfoFromXML(path,xmlInfo): """get index.meta and translate it to HTML""" html=[] dom = xml.dom.minidom.parseString(xmlInfo) try: name=getText(dom.getElementsByTagName("name")[0].childNodes) except: name="NOT_DEFINED!!!" try: creator=getText(dom.getElementsByTagName("creator")[0].childNodes) except: creator="NOT_DEFINED!!!" try: creation_date=getText(dom.getElementsByTagName("archive-creation-date")[0].childNodes) except: creation_date="NOT_DEFINED!!!" try: description=getText(dom.getElementsByTagName("description")[0].childNodes) except: description="NOT_DEFINED!!!" try: type=getText(dom.getElementsByTagName("content-type")[0].childNodes) except: type="" if type=="scanned document": html="

Document: "+name+"

" elif type=="folder": html="

Folder: "+name+"

" else: html="

Document: "+name+"

" html=html+"

created by: "+creator+" at: "+creation_date+"

" html=html+"

Description

"+description+"

" try: bib = dom.getElementsByTagName("meta")[0].getElementsByTagName("bib")[0] if bib.attributes.has_key('type'): html=html+"

Info ("+bib.attributes['type'].value+")

" else: html=html+"

Info

" html=html+getBib(bib.childNodes) except: """none""" # html=html.encode('utf-8','replace')+getBib(bib.childNodes).encode('utf-8','replace') return html def getBib(nodelist): """ translate bibliographical entries """ rc= "" for node in nodelist: if node.nodeType == node.ELEMENT_NODE: """nothing""" rc = rc+"" #print rc return rc+"
"+str(node.nodeName)+": "+getText(node.childNodes)+"
" def getPropertyOfDirs(indexMeta,propertyName): """gibt Eigenschaften der directorys gemaess Index.metas file in path aus @param indexMeta: index.meta file @param propertyName: Property die ausgegebenwerden soll @return: Hash mit key name des Directories and Value von property, None if error. """ ret={} try: dom=xml.dom.minidom.parseString(indexMeta) rootProp=xml.xpath.Evaluate("/resource/%s"%propertyName,dom) if len(rootProp)==1: property= getText(rootProp[0].childNodes) ret["."]=property for node in dom.getElementsByTagName("dir"): try: property= getText(node.getElementsByTagName(propertyName)[0].childNodes) dirName=getText(node.getElementsByTagName("name")[0].childNodes) ret[dirName]=property except: ret[dirName]=none return ret except: return ret def dirHasProperty(path,indexMeta,propertyName,propertyValue): """gibt 1 zurück falls path hat propertyName und properName=propertyValue @param propertyName:Property von path in index.meta des parent folders von path @param propertyValue:Wert der Property @param path: Pfad der getestet werden soll """ if getPropertyOfDirs(indexMeta,propertyName).get(os.path.split(path)[1],None)==propertyValue: return 1 else: return 0 def isImageFolder(path,indexMeta): """check if folder contains images without metadata or with metadata""" # metadaten ergeben imagefolder if dirHasProperty(path,indexMeta,'content-type','images'): return 1 def isVideoFolder(path,indexMeta): """check if folder contains images without metadata or with metadata""" # metadaten ergeben imagefolder if dirHasProperty(path,indexMeta,'media-type','video'): return 1 def isVideoStream(path,indexMeta): if dirHasProperty(path,indexMeta,'container-format','quicktime'): return 1 def isImageFolderGuess(path): """check if folder contains images without metadata or with metadata""" #sonst rate ob folder images enthaelten durch test nach suffix try: dir=os.listdir(path) imagesuffixes=['.gif','.jpg','.jpeg','.png','.tiff','.tif'] ret="" for a in dir: suffix=os.path.splitext(a)[1].lower() if suffix in imagesuffixes: return 1 return 0 except: return 0 def checkOSASFileType(object): """checke filetype nicht erkannte type auf werden auf none gesetzt """ if os.path.split(object)[1][0]=="." or os.path.split(object)[1] in OSASExcludedFiles: return None elif isImageFolderGuess(object): return 'OSAS_imageFolder' elif os.path.split(object)[1]=="index.meta": return 'OSAS_metaDataFile' elif os.path.isdir(object): return 'OSAS_dir' elif os.path.isfile(object): return 'OSAS_file' def toList(fields): """Einzelfeld in Liste umwandeln @param fields: String oder Array @return: gibt liste zurueck """ if type(fields)==StringType: return [fields] else: return fields def localDate(): """gives formatted local date""" return strftime("%d.%m.%Y",localtime())