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>