Annotation of OSA_system2/OSAS_helpers.py, revision 1.11

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

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>