Annotation of OSA_system2/OSAS_helpers.py, revision 1.10
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.8 dwinter 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',]
1.1 dwinter 9: OSASExcludedFiles=['TheVolumeSettingsFolder','TheFindByContentFolder']
10:
1.2 dwinter 11:
1.1 dwinter 12: def getText(nodelist):
13: """gibt text aus nodelist"""
14: rc = ""
15: for node in nodelist:
1.10 ! dwinter 16: if node.nodeType == node.TEXT_NODE:
1.1 dwinter 17: rc = rc + node.data
18: return rc
19:
1.2 dwinter 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')
1.3 dwinter 69:
70:
71: return html
1.2 dwinter 72:
1.1 dwinter 73:
74: def getBib(nodelist):
75: """ translate bibliographical entries """
76: rc= "<table border='0'>"
77:
78: for node in nodelist:
79:
1.10 ! dwinter 80: if node.nodeType == node.ELEMENT_NODE:
! 81: """nothing"""
1.1 dwinter 82:
1.10 ! dwinter 83: rc = rc+"<tr><td valign='right'>"+str(node.nodeName)+":</td><td> "+getText(node.childNodes)+"</td></tr>"
1.1 dwinter 84:
85: #print rc
86: return rc+"</table>"
87:
1.7 dwinter 88: def getPropertyOfDirs(indexMeta,propertyName):
1.1 dwinter 89: """gibt Eigenschaften der directorys gemaess Index.metas file in path aus
1.6 dwinter 90: @param indexMeta: index.meta file
1.7 dwinter 91: @param propertyName: Property die ausgegebenwerden soll
1.1 dwinter 92: @return: Hash mit key name des Directories and Value von property, None if error.
93: """
94: ret={}
1.5 dwinter 95:
1.1 dwinter 96: try:
1.6 dwinter 97: dom=xml.dom.minidom.parseString(indexMeta)
1.7 dwinter 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:
1.1 dwinter 104: for node in dom.getElementsByTagName("dir"):
1.7 dwinter 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
1.1 dwinter 111: return ret
112: except:
113:
114: return ret
115:
1.7 dwinter 116:
1.6 dwinter 117: def dirHasProperty(path,indexMeta,propertyName,propertyValue):
1.1 dwinter 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: """
1.6 dwinter 123: if getPropertyOfDirs(indexMeta,propertyName).get(os.path.split(path)[1],None)==propertyValue:
1.1 dwinter 124: return 1
125: else:
126: return 0
127:
1.6 dwinter 128: def isImageFolder(path,indexMeta):
1.1 dwinter 129: """check if folder contains images without metadata or with metadata"""
130: # metadaten ergeben imagefolder
1.6 dwinter 131: if dirHasProperty(path,indexMeta,'content-type','images'):
1.1 dwinter 132: return 1
133:
1.7 dwinter 134: def isVideoFolder(path,indexMeta):
135: """check if folder contains images without metadata or with metadata"""
136: # metadaten ergeben imagefolder
1.9 dwinter 137:
1.7 dwinter 138: if dirHasProperty(path,indexMeta,'media-type','video'):
139: return 1
1.6 dwinter 140:
1.7 dwinter 141: def isVideoStream(path,indexMeta):
142: if dirHasProperty(path,indexMeta,'container-format','quicktime'):
143: return 1
144:
1.6 dwinter 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
1.1 dwinter 148: try:
1.6 dwinter 149: dir=os.listdir(path)
1.1 dwinter 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()
1.10 ! dwinter 156:
1.1 dwinter 157: if suffix in imagesuffixes:
158: return 1
159:
160: return 0
161:
162: except:
163: return 0
164:
1.6 dwinter 165: def checkOSASFileType(object):
1.1 dwinter 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
1.6 dwinter 171: elif isImageFolderGuess(object):
1.1 dwinter 172: return 'OSAS_imageFolder'
173: elif os.path.split(object)[1]=="index.meta":
174: return 'OSAS_metaDataFile'
1.6 dwinter 175: elif os.path.isdir(object):
1.1 dwinter 176: return 'OSAS_dir'
1.6 dwinter 177: elif os.path.isfile(object):
1.1 dwinter 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"""
1.10 ! dwinter 194: return strftime("%d.%m.%Y",localtime())
1.1 dwinter 195:
196:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>