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