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