Annotation of OSA_system2/OSAS_helpers.py, revision 1.12
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.12 ! casties 125: """gibt 1 zurueck falls path hat propertyName und properName=propertyValue
1.1 dwinter 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>