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