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