Annotation of OSAS/OSA_system/OSAS_helpers.py, revision 1.7
1.1 dwinter 1: """ some helpfull methods """
2: import xml.dom.minidom
3: import os.path
4: import re
1.4 dwinter 5: import urllib
6:
1.7 ! dwinter 7: def changeIndexMeta(argv,path,dirnames):
! 8: """change index.meta"""
! 9: subnodes={}
! 10:
! 11: if not argv['startpage']=='':
! 12: subnodes['startpage']=argv['startpage']
! 13:
! 14: if not argv['xslt']=='':
! 15: subnodes['xslt']=argv['xslt']
! 16:
! 17: if not argv['thumbtemplate']=='':
! 18: subnodes['thumbtemplate']=argv['thumbtemplate']
! 19:
! 20: if not argv['topbar']=='':
! 21: subnodes['toptemplate']=argv['toptemplate']
! 22:
! 23: print path
! 24: try:
! 25: changeNodesInIndexMeta(path,"",subnodes)
! 26: urllib.urlopen("http://nausikaa2.rz-berlin.mpg.de:86/cgi-bin/toc/admin/reg.cgi?path=%s"%path).readlines()
! 27: except:
! 28: print "ERROR (changeIndexMeta)",path
! 29: return "done"
! 30:
! 31:
1.4 dwinter 32:
33: def readArchimedesXML(folder):
34: """gib URL aus """
35: try:
36: XML=urllib.urlopen("http://archimedes.mpiwg-berlin.mpg.de/cgi-bin/toc/toc.cgi?step=xmlcorpusmanifest").read()
37: #print XML
38: dom=xml.dom.minidom.parseString(XML)
39: items=dom.getElementsByTagName('item')
40: dict={}
41:
42: for item in items:
43: #print item.attributes['dir'].value
44: try:
45: dict[item.attributes['dir'].value]=item.attributes['xml'].value
46: #print item.attributes['dir'].value,item.attributes['text'].value
47: except:
48: """nothing"""
49:
50: if dict.has_key(folder):
51: return dict[folder]
52: else:
53: return ""
54: except:
55: return ""
56:
57:
1.1 dwinter 58:
59: def getText(nodelist):
60:
61: rc = ""
62: for node in nodelist:
63:
64: if node.nodeType == node.TEXT_NODE:
65: rc = rc + node.data
66: return rc
67:
68: def changeNodesInIndexMeta(path,node,subnodes,parent=None,nodeAttributes=None):
69: """node mit subnodes wird in index.meta in path eingetragen bzw. ausgetauscht"""
70:
71: if os.path.exists(path+"/index.meta"):
72: inFile=file(path+"/index.meta")
73: f=inFile.read()
74: inFile.close()
75: else:
1.2 dwinter 76: f="""<resource type="ECHO" version="1.1"></resource>"""
1.1 dwinter 77:
78:
79: dom=xml.dom.minidom.parseString(f)
80: root=dom.getElementsByTagName("resource")[0]
81:
82: if parent:
83:
84: try:
85: root=root.getElementsByTagName(parent)[0]
86: except:
87: #print "parent",parent
88: nodeNew=dom.createElement(parent)
89: root.appendChild(nodeNew)
90: root=root.getElementsByTagName(parent)[0]
91:
92: # check if node already exist
93:
94:
95: if node=="":
96: for subnode in subnodes.keys():
97:
1.2 dwinter 98: nodeOld=root.getElementsByTagName(subnode)
1.3 dwinter 99:
1.2 dwinter 100: if nodeOld: # if yes -> delete it
1.3 dwinter 101: try:
102: root.removeChild(nodeOld[0]).unlink()
103: except:
104: """nothing"""
1.2 dwinter 105:
1.1 dwinter 106: namenode=dom.createElement(re.sub(r' ','-',subnode))
1.5 dwinter 107: namenodetext=dom.createTextNode(unicode(subnodes[subnode],"utf8"))
1.1 dwinter 108: namenode.appendChild(namenodetext)
109: root.appendChild(namenode)
110:
111: else:
1.2 dwinter 112: nodeOld=root.getElementsByTagName(node)
113:
114: if nodeOld: # if yes -> delete it
115: root.removeChild(nodeOld[0]).unlink()
116:
1.1 dwinter 117: nodeNew=dom.createElement(node) # create new
118:
119: if nodeAttributes:
120: for attribute in nodeAttributes.keys():
121: #print attribute,nodeAttributes[attribute]
122: nodeNew.setAttribute(attribute,nodeAttributes[attribute])
123:
124: for subnode in subnodes.keys():
125:
126: namenode=dom.createElement(re.sub(r' ','-',subnode))
1.5 dwinter 127: namenodetext=dom.createTextNode(unicode(subnodes[subnode],"utf8"))
1.1 dwinter 128: namenode.appendChild(namenodetext)
129: nodeNew.appendChild(namenode)
130:
131:
132: root.appendChild(nodeNew)
133:
134: writefile=file(path+"/index.meta","w")
135: writefile.write(dom.toxml().encode('utf-8'))
136: writefile.close()
1.2 dwinter 137: os.chmod(path+"/index.meta",0664)
1.1 dwinter 138:
139:
140:
141:
142:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>