1: #Neue Version Begin 5.4.2004
2:
3:
4: """Methoden zum hinzufügen von Dokumenten ins Archiv"""
5: from OSAS_helpers import readArchimedesXML
6: try:
7: import archive
8: except:
9: print "archive not imported"
10:
11: import os
12:
13: from Products.PageTemplates.PageTemplateFile import PageTemplateFile
14: from Products.PageTemplates.PageTemplate import PageTemplate
15: import string
16: import urllib
17: import xml.dom.minidom
18: from time import localtime,strftime
19: from Globals import package_home
20:
21: import re
22: def showHelp(helptext):
23: """show helptext"""
24: return """<html>
25: <body>
26: %
27: </body>
28: </html>"""%helptext
29: def add(self, no_upload=0):
30: """ Add metadata or metadata and documents to the repository
31: no_upload=0 kein upload sonst upload von documententen"""
32:
33: #self.referencetypes=self.ZopeFind(self,obj_metatypes=['OSAS_MetadataMapping'])
34: self.referencetypes=self.ZopeFind(self)
35:
36: newtemplate=PageTemplateFile('Products/OSA_system/zpt/OSAS_add_new').__of__(self)
37: self.REQUEST.SESSION['path']=self.REQUEST['path']
38: if no_upload==0:
39: self.REQUEST.SESSION['no_upload']='yes'
40: else:
41: if self.REQUEST.SESSION.has_key('no_upload'):
42: del self.REQUEST.SESSION['no_upload']
43:
44: return newtemplate()
45:
46:
47:
48: def getISO():
49: """ISO"""
50: try:
51: f=file(os.path.join(package_home(globals()),'iso639-1.inc'),'r').readlines()
52:
53: ret={}
54: for lineraw in f:
55: line=lineraw.encode('ascii','replace')
56: value=string.split(line,'\t')[0].encode('ascii','replace')
57: key=string.split(line,'\t')[1].encode('ascii','replace')
58: ret[key]=value
59: except:
60: ret={}
61: return ret
62:
63:
64: def add2(self):
65: self.reftype=self.REQUEST['Reference Type']
66: self.REQUEST.SESSION['reftype']=self.reftype
67: self.bibdata={}
68: for referenceType in self.referencetypes:
69: #print referenceType
70: if referenceType[1].title == self.reftype:
71: self.bibdata[referenceType[1].title]=referenceType[1].fields
72: self.bibdata['data']=referenceType[1]
73: self.fields=self.bibdata[self.reftype]
74:
75: self.isolist=getISO()
76: tmp=getISO().keys()
77: tmp.sort()
78: self.isokeys=tmp
79: #listed=[ x for x in self.isolist.keys()]
80: #print listed
81: #sorted=listed.sort()
82: #print sorted
83:
84: newtemplate=PageTemplateFile('Products/OSA_system/zpt/OSAS_add_bibdata').__of__(self)
85: return newtemplate()
86: #return self.fields
87:
88:
89: def parse_query_string(str):
90: queries={}
91: key=""
92: value=""
93: tmp=""
94: toggle="key"
95: str=urllib.unquote(str)
96: for i in str:
97: if i=="=":
98: key=tmp
99: toggle="value"
100: tmp=""
101: elif i=="&":
102: queries[key]=tmp
103: tmp=""
104: toggle="key"
105: else:
106: if toggle=="key":
107: if i=="+" : i="-"
108: else:
109: if i=="+" : i=" "
110: tmp=tmp+i
111: queries[key]=tmp
112: return queries
113:
114: def add3(self):
115: """Foldername"""
116: metadata=parse_query_string(self.REQUEST['QUERY_STRING'])
117: self.REQUEST.SESSION['metadata']=metadata
118: vorschlag=[]
119: if metadata.has_key('author'):
120: vorschlag.append(metadata['author'][:5])
121: if metadata.has_key('title'):
122: vorschlag.append(metadata['title'][:5])
123: if metadata.has_key('year'):
124: vorschlag.append(metadata['year'])
125:
126:
127: vorschlag_naming=string.join(vorschlag,"_")
128:
129:
130: self.vorschlag_naming=unicode(vorschlag_naming,'ascii','ignore')
131: if self.REQUEST.SESSION.has_key('no_upload'):
132: self.REQUEST.SESSION['folder_name']=self.REQUEST.SESSION['path']
133: return add5(self)
134: else:
135: newtemplate=PageTemplateFile('Products/OSA_system/zpt/OSAS_add_naming').__of__(self)
136: return newtemplate()
137:
138:
139: def add4(self):
140: self.path=re.search(r"/mpiwg(.*)",self.REQUEST.SESSION['path']).group(1)
141:
142: self.folder_name=self.REQUEST['folder_name']
143: # next has to be changed -> error if back button is used!!
144: self.REQUEST.SESSION['folder_name']=self.folder_name
145: #return self.REQUEST['submit']
146:
147: try:
148: os.mkdir(self.REQUEST.SESSION['path'])
149: os.chmod(self.REQUEST.SESSION['path'],0774)
150: except:
151: """nothing"""
152:
153: if self.REQUEST['submit']=="upload images":
154: self.REQUEST.SESSION['path']=os.path.join(self.REQUEST.SESSION['path'],self.REQUEST['folder_name'])
155:
156:
157: self.image_folder_name="pageimg"
158: newtemplate=PageTemplateFile('Products/OSA_system/zpt/OSAS_upload').__of__(self)
159: return newtemplate()
160:
161: elif self.REQUEST['submit']=="upload pdf":
162: os.mkdir(os.path.join(self.REQUEST.SESSION['path'],self.REQUEST['folder_name']))
163: return addPdf(self,os.path.join(self.REQUEST.SESSION['path'],self.REQUEST['folder_name']))
164: else:
165: os.mkdir(os.path.join(self.REQUEST.SESSION['path'],self.REQUEST['folder_name']))
166: return addText(self,os.path.join(self.REQUEST.SESSION['path'],self.REQUEST['folder_name']))
167:
168:
169: def add5(self):
170: """ADD INDEX.META"""
171: newtemplate=PageTemplateFile('Products/OSA_system/zpt/OSAS_add_metadata').__of__(self)
172: return newtemplate()
173:
174: def add6(self):
175: metadata=parse_query_string(self.REQUEST['QUERY_STRING'])
176: metadata['archive-path']=os.path.split(self.REQUEST.SESSION['path'])[0]
177: #metadata['folder_name']=self.REQUEST.SESSION['folder_name']
178: metadata['folder_name']=os.path.split(self.REQUEST.SESSION['path'])[1]
179: metadata['content-type']="scanned document"
180: self.reftype=self.REQUEST.SESSION['reftype']
181: self.REQUEST.SESSION['add_metadata']=metadata
182: self.add_metadata=metadata
183: self.metadata=self.REQUEST.SESSION['metadata']
184: self.metadataprint=""
185: for tag in self.metadata.keys():
186: if tag!="":
187: self.metadataprint=self.metadataprint+"<"+tag+">"+self.metadata[tag]+"</"+tag+">\n"
188:
189: newtemplate=PageTemplateFile('Products/OSA_system/zpt/index_meta').__of__(self)
190: newtemplate.content_type="text/plain"
191: renderxml = newtemplate()
192: if self.REQUEST.SESSION.has_key('no_upload'):
193: metapath=self.REQUEST.SESSION['path']+"/index.meta"
194: else:
195: metapath=self.add_metadata['archive-path']+"/"+self.add_metadata['folder_name']+"/index.meta"
196:
197: f=open(metapath,'w')
198: f.writelines(renderxml)
199: f.close()
200: os.chmod(metapath,0664)
201: os.popen('chmod -R 0775 %s'%self.add_metadata['archive-path']+"/"+self.add_metadata['folder_name'])
202: if self.REQUEST.SESSION.has_key('no_upload'):
203:
204: #newtemplate2=PageTemplateFile('/usr/local/mpiwg/Zope/Extensions/done',"text/html").__of__(self)
205: return self.REQUEST.response.redirect(self.REQUEST['URL2']+"?path="+self.REQUEST.SESSION['path'])
206: else:
207: #print self.add_metadata['archive-path']
208: self.viewpath=re.search(r"/mpiwg/online/(.*)",self.add_metadata['archive-path']).group(1)
209:
210: if (self.REQUEST.SESSION.has_key('no_upload')) and (self.REQUEST.SESSION['no_upload']=="text"):
211: """text upload"""
212: return 1
213: else:
214: newtemplate2=PageTemplateFile('Products/OSA_system/zpt/OSAS_saved').__of__(self)
215: newtemplate2.content_type="text/html"
216: self.REQUEST.response.setHeader('Content-Type','text/html')
217: return newtemplate2()
218:
219:
220:
221: def date(self):
222: return strftime("%d.%m.%Y",localtime())
223:
224:
225: def addPresentation(self,path):
226: """add presentation to the path"""
227:
228: dom=xml.dom.minidom.parse(path+"/index.meta")
229:
230:
231: try:
232: author=archive.getText(dom.getElementsByTagName('author')[0].childNodes)
233: except:
234: try:
235: author=archive.getText(dom.getElementsByTagName('Author')[0].childNodes)
236: except:
237: try:
238: author=archive.getText(dom.getElementsByTagName('Editor')[0].childNodes)
239: except:
240: author=""
241: try:
242: title=archive.getText(dom.getElementsByTagName('title')[0].childNodes)
243: except:
244: title=""
245:
246: try:
247: date=archive.getText(dom.getElementsByTagName('year')[0].childNodes)
248: except:
249: try:
250: date=archive.getText(dom.getElementsByTagName('Year')[0].childNodes)
251: except:
252: try:
253: date=archive.getText(dom.getElementsByTagName('date')[0].childNodes)
254: except:
255: date=""
256: i=1
257: while os.path.exists("%02d-presentation"%i):
258: i+=1
259: self.REQUEST.SESSION['presentationname']="%02d-presentation"%i
260: self.REQUEST.SESSION['path']=path
261: self.REQUEST.SESSION['xmlvorschlag']="""<info>
262: <author>%s</author>
263: <title>%s</title>
264: <date>%s</date>
265: <display>yes</display>
266: </info>"""%(author,title,date)
267:
268: newtemplate=PageTemplateFile('Products/OSA_system/zpt/addPresentation').__of__(self)
269: return newtemplate()
270:
271: def addPresentation2(self):
272: """add presentation """
273: folder_name=self.REQUEST['folder_name']
274: #print self.REQUEST['folder_name']
275: content_description=self.REQUEST['content_description']
276:
277: path=self.REQUEST.SESSION['path']
278:
279: if not self.REQUEST.has_key('fileupload'):
280: xmlinfo=self.REQUEST['xmltext']
281: file_name="info.xml"
282:
283: else:
284: file_name=self.REQUEST['fileupload'].filename
285: xmlinfo=self.REQUEST.form['fileupload'].read()
286: # hack Multipart auswertung funktioniert nicht ausser bei mozilla
287: file_name="info.xml"
288: xmlinfo=self.REQUEST['xmltext']
289: try:
290: os.mkdir(path+"/"+folder_name)
291: except:
292: """nothing"""
293: #print "NAME:",file_name
294: f=open(path+"/"+folder_name+"/"+file_name,"w")
295: f.write(xmlinfo)
296: f.close()
297: try:
298: os.chmod(path+"/"+folder_name,0755)
299: except:
300: """NO"""
301:
302: os.chmod(path+"/"+folder_name+"/"+file_name,0644)
303: addDirsToIndexMeta(path,folder_name,content_description,'presentation')
304:
305: return self.REQUEST.RESPONSE.redirect(self.REQUEST['URL2']+'?path='+path)
306:
307:
308: def addPdf(self,path,folder=None):
309: """add fulltext to the path"""
310: self.REQUEST.SESSION['existing_names']=['pageimg'] # to be done generate list of existing text files
311: self.REQUEST.SESSION['pathnew']=path
312: newtemplate=PageTemplateFile('Products/OSA_system/zpt/addPdf').__of__(self)
313: return newtemplate()
314:
315: def addPdf2(self):
316: """addtext"""
317: folder_name="pdf" # foldername fixed
318:
319: if self.REQUEST['file_name']=="":
320: file_name=self.REQUEST['fileupload'].filename
321: else:
322: file_name=self.REQUEST['file_name']
323:
324: #print self.REQUEST['folder_name']
325: content_description=self.REQUEST['content_description']
326: path=self.REQUEST.SESSION['pathnew']
327:
328: filedata=self.REQUEST.form['fileupload'].read()
329: try:
330: os.mkdir(path+"/"+folder_name)
331: except:
332: """nothing"""
333: f=open(path+"/"+folder_name+"/"+file_name,"w")
334: f.write(filedata)
335: f.close()
336: os.chmod(path+"/"+folder_name,0755)
337: os.chmod(path+"/"+folder_name+"/"+file_name,0644)
338: addDirsToIndexMeta(path,folder_name,content_description,'pdf')
339:
340: return self.REQUEST.RESPONSE.redirect(self.REQUEST['URL2']+'?path='+path)
341:
342: def addText(self,path,folder=None):
343: """add fulltext to the path"""
344: self.REQUEST.SESSION['existing_names']=['pageimg'] # to be done generate list of existing text files
345: self.REQUEST.SESSION['pathnew']=path
346: newtemplate=PageTemplateFile('Products/OSA_system/zpt/addText').__of__(self)
347: return newtemplate()
348:
349: def addText2(self):
350: """addtext"""
351: folder_name=self.REQUEST['folder_name']
352: #print self.REQUEST['folder_name']
353: content_description=self.REQUEST['content_description']
354: path=self.REQUEST.SESSION['pathnew']
355: file_name=self.REQUEST['fileupload'].filename
356: filedata=self.REQUEST.form['fileupload'].read()
357: os.mkdir(path+"/"+folder_name)
358: f=open(path+"/"+folder_name+"/"+file_name,"w")
359: f.write(filedata)
360: f.close()
361: os.chmod(path+"/"+folder_name,0755)
362: os.chmod(path+"/"+folder_name+"/"+file_name,0644)
363: addDirsToIndexMeta(path,folder_name,content_description,'fulltext')
364:
365: return self.REQUEST.RESPONSE.redirect(self.REQUEST['URL2']+'?path='+path)
366:
367: def addTextExternal(self,path,texturl,version):
368: """hinzufügen eines externen textes"""
369: try: #neue text version einlesen
370: texttemp=urllib.urlopen(texturl).readlines()
371: text=""
372: for line in texttemp:
373: text=text+line
374: except: #fehler beim lesen des textes
375: return "ERROR: cannot read: %s"%texturl
376: if TextExternalError(text): #kein xml header
377: return "ERROR: cannot read: %s"%texturl, "received:",text
378: textpath=getNewTextPath(path) #erzeuge neuen Ornder für den Text
379: splitted=string.split(texturl,"/")
380: name=splitted[len(splitted)-1] #Name des XML-files
381: try:
382: writefile=file(path+"/"+textpath+"/"+name,"w")
383: except:
384: return"ERROR: cannot write: %s"%path+"/"+textpath+"/"+name
385: writefile.write(text)
386: writefile.close()
387: os.chmod(path+"/"+textpath+"/"+name,0644)
388:
389: #add new file to XML
390: dom=xml.dom.minidom.parse(path+"/index.meta")
391: node=dom.getElementsByTagName('resource')[0] #getNode
392:
393: subnode=dom.createElement('dir')
394:
395: namenode=dom.createElement('name')
396: namenodetext=dom.createTextNode(textpath)
397: namenode.appendChild(namenodetext)
398: subnode.appendChild(namenode)
399:
400: descriptionnode=dom.createElement('description')
401: descriptionnodetext=dom.createTextNode('archimedes text:'+version)
402: descriptionnode.appendChild(descriptionnodetext)
403: subnode.appendChild(descriptionnode)
404:
405: contentnode=dom.createElement('content-type')
406: contentnodetext=dom.createTextNode('fulltext')
407: contentnode.appendChild(contentnodetext)
408: subnode.appendChild(contentnode)
409:
410: node.appendChild(subnode)
411:
412: writefile=file(path+"/index.meta","w")
413: writefile.write(dom.toxml().encode('utf-8'))
414: writefile.close()
415:
416: #change texttool tag
417: dom=xml.dom.minidom.parse(path+"/index.meta")
418: node=dom.getElementsByTagName('meta')[0] #getNode
419:
420: try: #texttool existiert schon
421: subnode=node.getElementsByTagName('texttool')[0]
422: except: #wenn nicht Fehler ausgeben
423: return "ERROR:no presentation configured yet, user Web Front End to do so!"
424:
425:
426: try:
427: texttoolnodelist=subnode.getElementsByTagName('text')
428:
429: if not len(texttoolnodelist)==0: #texttool tag existiert schon, dann löschen
430: subsubnode=subnode.removeChild(texttoolnodelist[0])
431: subsubnode.unlink()
432: except:
433: """nothing"""
434: # text neu anlegen
435: textfoldernode=dom.createElement('text')
436: textfoldernodetext=dom.createTextNode(textpath+"/"+name)
437: textfoldernode.appendChild(textfoldernodetext)
438: subnode.appendChild(textfoldernode)
439:
440: #index.meta ausgeben
441: writefile=file(path+"/index.meta","w")
442: writefile.write(dom.toxml().encode('utf-8'))
443: writefile.close()
444:
445: #registrieren
446: return urllib.urlopen("http://nausikaa2.rz-berlin.mpg.de:86/cgi-bin/toc/admin/reg.cgi?path=%s"%path).readlines()
447:
448:
449:
450: def TextExternalError(text):
451: firsts=text[0:10]
452: #print firsts
453: try:
454: match=re.search(r".*<?xml.*",firsts)
455: except:
456: return 1
457: return 0
458:
459: def getNewTextPath(path):
460: i=1
461: while os.path.exists(path+"/fulltext%i"%i):
462: i+=1
463: os.mkdir(path+"/fulltext%i"%i)
464: os.chmod(path+"/fulltext%i"%i,0755)
465: return "fulltext%i"%i
466:
467: def addImages(self,path):
468: """Imagesfolder to the path"""
469: self.REQUEST.SESSION['existing_names']=['pageimg'] # to be done generate list of existing pageimages files
470: self.REQUEST.SESSION['path']=path
471: newtemplate=PageTemplateFile('Products/OSA_system/zpt/OSAS_addImages').__of__(self)
472: return newtemplate()
473:
474: def addImages2(self):
475:
476: self.image_folder_name=self.REQUEST['folder_name']
477: #print self.REQUEST['folder_name']
478: self.content_description=self.REQUEST['content_description']
479: #self.path=self.REQUEST.SESSION['path']
480:
481:
482: self.content_type='images'
483: addDirsToIndexMeta(self.REQUEST.SESSION['path'],self.image_folder_name,self.content_description,self.content_type)
484: self.REQUEST.SESSION['path']=re.search(r"/mpiwg(.*)",self.REQUEST.SESSION['path']).group(1)
485: newtemplate=PageTemplateFile('Products/OSA_system/zpt/OSAS_upload2').__of__(self)
486: return newtemplate()
487:
488:
489:
490: def addDirsToIndexMeta(path,folder_name,content_description,content_type):
491: #f=file(path+"/index.meta",r)
492: dom=xml.dom.minidom.parse(path+"/index.meta")
493: node=dom.getElementsByTagName('resource')[0] #getNode
494:
495: subnode=dom.createElement('dir')
496:
497: namenode=dom.createElement('name')
498: namenodetext=dom.createTextNode(folder_name)
499: namenode.appendChild(namenodetext)
500: subnode.appendChild(namenode)
501:
502: descriptionnode=dom.createElement('description')
503: descriptionnodetext=dom.createTextNode(content_description)
504: descriptionnode.appendChild(descriptionnodetext)
505: subnode.appendChild(descriptionnode)
506:
507: contentnode=dom.createElement('content-type')
508: contentnodetext=dom.createTextNode(content_type)
509: contentnode.appendChild(contentnodetext)
510: subnode.appendChild(contentnode)
511:
512: node.appendChild(subnode)
513:
514: writefile=file(path+"/index.meta","w")
515: writefile.write(dom.toxml().encode('utf-8'))
516: writefile.close()
517:
518: def readArchimedesXML(folder):
519: """gib URL aus """
520: XML=urllib.urlopen("http://archimedes.mpiwg-berlin.mpg.de/cgi-bin/toc/toc.cgi?step=xmlcorpusmanifest").read()
521: #print XML
522: dom=xml.dom.minidom.parseString(XML)
523: items=dom.getElementsByTagName('item')
524: dict={}
525:
526: for item in items:
527: #print item.attributes['dir'].value
528: try:
529: dict[item.attributes['dir'].value]=item.attributes['xml'].value
530: #print item.attributes['dir'].value,item.attributes['text'].value
531: except:
532: """nothing"""
533:
534: if dict.has_key(folder):
535: return dict[folder]
536: else:
537: return ""
538:
539:
540:
541:
542: def combineTextImage2(self,path):
543: """erstellt bzw. ändert texttool meta tag"""
544: dom=xml.dom.minidom.parse(path+"/index.meta")
545: node=dom.getElementsByTagName('meta')[0] #getNode
546:
547:
548: subnodelist=node.getElementsByTagName('texttool')
549: if not len(subnodelist)==0: #texttool tag existiert schon, dann löschen
550: subnode=node.removeChild(subnodelist[0])
551: subnode.unlink()
552:
553: subnode=dom.createElement('texttool') #neu erzeugen
554:
555:
556: presentfile=os.listdir(path+"/"+self.REQUEST['presentation'])[0]
557:
558:
559: displaynode=dom.createElement('display')
560: displaynodetext=dom.createTextNode('yes')
561: displaynode.appendChild(displaynodetext)
562: subnode.appendChild(displaynode)
563:
564: if self.REQUEST.has_key('image'):
565: namenode=dom.createElement('image')
566: namenodetext=dom.createTextNode(self.REQUEST['image'])
567: namenode.appendChild(namenodetext)
568: subnode.appendChild(namenode)
569:
570: if self.REQUEST.has_key('text'):
571: textfile=os.listdir(path+"/"+self.REQUEST['text'])[0]
572: textfoldernode=dom.createElement('text')
573: textfoldernodetext=dom.createTextNode(path+"/"+self.REQUEST['text']+"/"+textfile)
574: textfoldernode.appendChild(textfoldernodetext)
575: subnode.appendChild(textfoldernode)
576:
577: if self.REQUEST.has_key('external'):#USE CVS instead of local text
578: textfoldernode=dom.createElement('text')
579: textfoldernodetext=dom.createTextNode(self.REQUEST.SESSION['externxml'])
580: textfoldernode.appendChild(textfoldernodetext)
581: subnode.appendChild(textfoldernode)
582:
583: if self.REQUEST.has_key('pagebreak'):
584: pagebreaknode=dom.createElement('pagebreak')
585: pagebreaknodetext=dom.createTextNode(self.REQUEST['pagebreak'])
586: pagebreaknode.appendChild(pagebreaknodetext)
587: subnode.appendChild(pagebreaknode)
588:
589: if self.REQUEST.has_key('presentation'):
590: presentationnode=dom.createElement('presentation')
591: presentationnodetext=dom.createTextNode(self.REQUEST['presentation']+"/"+presentfile)
592: presentationnode.appendChild(presentationnodetext)
593: subnode.appendChild(presentationnode)
594:
595:
596: if self.REQUEST.has_key('xslt'):
597: if not self.REQUEST['xslt']=="":
598: xsltnode=dom.createElement('xslt')
599: xsltnodetext=dom.createTextNode(self.REQUEST['xslt'])
600: xsltnode.appendChild(xsltnodetext)
601: subnode.appendChild(xsltnode)
602:
603:
604: if self.REQUEST.has_key('thumbtemplate'):
605: if not self.REQUEST['thumbtemplate']=="":
606: xsltnode=dom.createElement('thumbtemplate')
607: xsltnodetext=dom.createTextNode(self.REQUEST['thumbtemplate'])
608: xsltnode.appendChild(xsltnodetext)
609: subnode.appendChild(xsltnode)
610:
611: if self.REQUEST.has_key('topbar'):
612: if not self.REQUEST['topbar']=="":
613: xsltnode=dom.createElement('toptemplate')
614: xsltnodetext=dom.createTextNode(self.REQUEST['topbar'])
615: xsltnode.appendChild(xsltnodetext)
616: subnode.appendChild(xsltnode)
617:
618: if self.REQUEST.has_key('startpage'):
619: if not self.REQUEST['startpage']=="":
620: xsltnode=dom.createElement('startpage')
621: xsltnodetext=dom.createTextNode(self.REQUEST['startpage'])
622: xsltnode.appendChild(xsltnodetext)
623: subnode.appendChild(xsltnode)
624:
625: if self.REQUEST.has_key('project'):
626: if not self.REQUEST['project']=="":
627: xsltnode=dom.createElement('project')
628: xsltnodetext=dom.createTextNode(self.REQUEST['project'])
629: xsltnode.appendChild(xsltnodetext)
630: subnode.appendChild(xsltnode)
631:
632: if self.REQUEST.has_key('digiliburlprefix'):
633: if not self.REQUEST['digiliburlprefix']=="":
634: xsltnode=dom.createElement('digiliburlprefix')
635: xsltnodetext=dom.createTextNode(self.REQUEST['digiliburlprefix'])
636: xsltnode.appendChild(xsltnodetext)
637: subnode.appendChild(xsltnode)
638:
639: node.appendChild(subnode)
640:
641: try:
642: node2=node.getElementsByTagName('bib')[0]
643: subs=node2.getElementsByTagName('lang')
644: for sub in subs:
645: node2.removeChild(sub)
646: except:
647: """nothing"""
648: try:
649: main=dom.getElementsByTagName('bib')[0]
650: node=dom.createElement('lang')
651: textnode=dom.createTextNode(self.REQUEST['lang'])
652: node.appendChild(textnode)
653: main.appendChild(node)
654: except:
655: try:
656: subs=dom.getElementsByTagName('lang')
657: main=dom.getElementsByTagName('resource')[0]
658: for sub in subs:
659: main.removeChild(sub)
660: except:
661: """nothing"""
662:
663: try:
664: main=dom.getElementsByTagName('resource')[0]
665: node=dom.createElement('lang')
666: textnode=dom.createTextNode(self.REQUEST['lang'])
667: #print "LANG:",self.REQUEST['lang']
668: node.appendChild(textnode)
669: main.appendChild(node)
670: except:
671: """nothing"""
672:
673: writefile=file(path+"/index.meta","w")
674: writefile.write(dom.toxml().encode('utf-8'))
675: writefile.close()
676:
677:
678:
679: urllib.urlopen("http://nausikaa2.rz-berlin.mpg.de:86/cgi-bin/toc/admin/reg.cgi?path=%s"%path).readlines()
680:
681: if self.REQUEST.has_key('image'): # falls bilder
682: dlpath = re.sub('/mpiwg/online/','',self.REQUEST['path'])+"/"+self.REQUEST['image']
683: os.popen("ssh archive@nausikaa2.rz-berlin.mpg.de /usr/local/mpiwg/scripts/scaleomat -src=/mpiwg/online -dest=/mpiwg/temp/online/scaled/thumb -dir=%s -scaleto=90 -replace >> /tmp/sc.out &"% )
684: #os.popen("ssh archive@nausikaa2.rz-berlin.mpg.de /usr/local/mpiwg/scripts/scaleomat.pl %s /mpiwg/temp/online/scaled/thumb 90 >> /tmp/sc.out &"% re.sub('/mpiwg/online/','',self.REQUEST['path']+"/"+self.REQUEST['image']))
685:
686: else: # falls keine Bilder (bug in reg.cgi info file ersetzen)
687: f=file("/tmp/tmp_info.xml","w")
688: f.write(patchedInfoXML(self.REQUEST['path']))
689: f.close()
690: splitted=path.split("/")
691: fn=splitted[len(splitted)-1]
692: remotePath="archive@nausikaa2.rz-berlin.mpg.de:/usr/local/share/archimedes/web/docs/proj/echo/1/docs/"+fn+"/info.xml"
693: os.popen("scp /tmp/tmp_info.xml %s"%remotePath)
694:
695: def patchedInfoXML(path):
696: dom=xml.dom.minidom.parse(path+"/index.meta")
697:
698: ret="<info>\n"
699: ret+="<remotetext>%s</remotetext>\n"%archive.getText(dom.getElementsByTagName('text')[0].childNodes)
700: ret+="<pagebreak>%s</pagebreak>\n"%archive.getText(dom.getElementsByTagName('pagebreak')[0].childNodes)
701: ret+="<display>%s</display>\n"%archive.getText(dom.getElementsByTagName('display')[0].childNodes)
702: try:
703: ret+="<toptemplate>%s</toptemplate>\n"%archive.getText(dom.getElementsByTagName('toptemplate')[0].childNodes)
704: except:
705: """not"""
706: try:
707: ret+="<thumbtemplate>%s</thumbtemplate>\n"%archive.getText(dom.getElementsByTagName('thumbtemplate')[0].childNodes)
708: except:
709: """not"""
710: try:
711: ret+="<startpage>%s</startpage>\n"%archive.getText(dom.getElementsByTagName('startpage')[0].childNodes)
712: except:
713: """not"""
714:
715: ret+="<lang>%s</lang>\n"%archive.getText(dom.getElementsByTagName('lang')[0].childNodes)
716: try:
717: ret+="<author>%s</author>\n"%archive.getText(dom.getElementsByTagName('author')[0].childNodes)
718: except:
719: """not"""
720: try:
721: ret+="<title>%s</title>\n"%archive.getText(dom.getElementsByTagName('title')[0].childNodes)
722: except:
723: """not"""
724:
725: ret+="</info>"
726:
727: return ret
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>