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: 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:
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:
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:
76: f="""<resource type="ECHO" version="1.1"></resource>"""
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:
98: nodeOld=root.getElementsByTagName(subnode)
99:
100: if nodeOld: # if yes -> delete it
101: try:
102: root.removeChild(nodeOld[0]).unlink()
103: except:
104: """nothing"""
105:
106: namenode=dom.createElement(re.sub(r' ','-',subnode))
107: namenodetext=dom.createTextNode(unicode(subnodes[subnode],"utf8"))
108: namenode.appendChild(namenodetext)
109: root.appendChild(namenode)
110:
111: else:
112: nodeOld=root.getElementsByTagName(node)
113:
114: if nodeOld: # if yes -> delete it
115: root.removeChild(nodeOld[0]).unlink()
116:
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))
127: namenodetext=dom.createTextNode(unicode(subnodes[subnode],"utf8"))
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()
137: os.chmod(path+"/index.meta",0664)
138:
139:
140:
141:
142:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>