File:  [Repository] / OSA_system2 / OSAS_helpers.py
Revision 1.9: download - view: text, annotated - select for diffs - revision graph
Thu Mar 17 19:26:52 2005 UTC (19 years, 2 months ago) by dwinter
Branches: MAIN
CVS tags: HEAD
fehler in metadaten handling korrigiert

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

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