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