File:  [Repository] / OSA_system2 / OSAS_helpers.py
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Mon Nov 29 09:48:07 2004 UTC (19 years, 7 months ago) by dwinter
Branches: dwinter
CVS tags: develoin
development version of the new OSAS


    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>