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