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