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