Annotation of OSA_system2/OSAS_helpers.py, revision 1.6

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

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