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