Annotation of OSA_system2/OSAS_helpers.py, revision 1.1.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>