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