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