--- OSAS/OSA_system/OSAS_add.py 2004/04/06 15:12:48 1.19
+++ OSAS/OSA_system/OSAS_add.py 2006/06/14 16:13:53 1.47
@@ -4,602 +4,754 @@
"""Methoden zum hinzufügen von Dokumenten ins Archiv"""
from OSAS_helpers import readArchimedesXML
try:
- import archive
+ import archive
except:
- print "archive not imported"
-
+ print "archive not imported"
+
import os
+import os.path
from Products.PageTemplates.PageTemplateFile import PageTemplateFile
from Products.PageTemplates.PageTemplate import PageTemplate
import string
import urllib
+import zLOG
import xml.dom.minidom
from time import localtime,strftime
from Globals import package_home
+from types import *
import re
+def showHelp(helptext):
+ """show helptext"""
+ return """
+
+ %
+
+ """%helptext
def add(self, no_upload=0):
""" Add metadata or metadata and documents to the repository
no_upload=0 kein upload sonst upload von documententen"""
#self.referencetypes=self.ZopeFind(self,obj_metatypes=['OSAS_MetadataMapping'])
- self.referencetypes=self.ZopeFind(self)
-
- newtemplate=PageTemplateFile('Products/OSA_system/zpt/OSAS_add_new').__of__(self)
+ self.referencetypes=self.ZopeFind(self)
+
+ newtemplate=PageTemplateFile(os.path.join(package_home(globals()),'zpt','OSAS_add_new')).__of__(self)
self.REQUEST.SESSION['path']=self.REQUEST['path']
- if no_upload==0:
- self.REQUEST.SESSION['no_upload']='yes'
- else:
- if self.REQUEST.SESSION.has_key('no_upload'):
- del self.REQUEST.SESSION['no_upload']
-
- return newtemplate()
+ if no_upload==0:
+ self.REQUEST.SESSION['no_upload']='yes'
+ else:
+ if self.REQUEST.SESSION.has_key('no_upload'):
+ del self.REQUEST.SESSION['no_upload']
+
+ return newtemplate()
def getISO():
- """ISO"""
- try:
- f=file(os.path.join(package_home(globals()),'iso639-1.inc'),'r').readlines()
-
- ret={}
- for lineraw in f:
- line=lineraw.encode('ascii','replace')
- value=string.split(line,'\t')[0].encode('ascii','replace')
- key=string.split(line,'\t')[1].encode('ascii','replace')
- ret[key]=value
- except:
- ret={}
+ """ISO"""
+ try:
+ f=file(os.path.join(package_home(globals()),'iso639-1.inc'),'r').readlines()
+
+ ret={}
+ for lineraw in f:
+ line=lineraw.encode('ascii','replace').strip()
+ value=string.split(line,'\t')[0].encode('ascii','replace')
+ key=string.split(line,'\t')[1].encode('ascii','replace')
+ ret[key]=value
+ except:
+ ret={}
return ret
+
def add2(self):
- self.reftype=self.REQUEST['Reference Type']
- self.REQUEST.SESSION['reftype']=self.reftype
- self.bibdata={}
- for referenceType in self.referencetypes:
- print referenceType
- self.bibdata[referenceType[1].title]=referenceType[1].fields
-
- self.fields=self.bibdata[self.reftype]
- self.isolist=getISO()
- tmp=getISO().keys()
- tmp.sort()
- self.isokeys=tmp
+ self.reftype=self.REQUEST['Reference Type']
+ self.REQUEST.SESSION['reftype']=self.reftype
+ self.bibdata={}
+ for referenceType in self.referencetypes:
+ #print referenceType
+ if referenceType[1].title == self.reftype:
+ self.bibdata[referenceType[1].title]=referenceType[1].fields
+ self.bibdata['data']=referenceType[1]
+ self.fields=self.bibdata[self.reftype]
+
+ self.isolist=getISO()
+ tmp=getISO().keys()
+ tmp.sort()
+ self.isokeys=tmp
#listed=[ x for x in self.isolist.keys()]
- #print listed
+ #print listed
#sorted=listed.sort()
- #print sorted
-
- newtemplate=PageTemplateFile('Products/OSA_system/zpt/OSAS_add_bibdata').__of__(self)
- return newtemplate()
- #return self.fields
+ #print sorted
+
+ newtemplate=PageTemplateFile(os.path.join(package_home(globals()),'zpt','OSAS_add_bibdata')).__of__(self)
+ return newtemplate()
+ #return self.fields
def parse_query_string(str):
- queries={}
- key=""
- value=""
- tmp=""
- toggle="key"
- str=urllib.unquote(str)
- for i in str:
- if i=="=":
- key=tmp
- toggle="value"
- tmp=""
- elif i=="&":
- queries[key]=tmp
- tmp=""
- toggle="key"
- else:
- if toggle=="key":
- if i=="+" : i="-"
- else:
- if i=="+" : i=" "
- tmp=tmp+i
- queries[key]=tmp
- return queries
-
+ queries={}
+ key=""
+ value=""
+ tmp=""
+ toggle="key"
+ str=urllib.unquote(str)
+ for i in str:
+ if i=="=":
+ key=tmp
+ toggle="value"
+ tmp=""
+ elif i=="&":
+ queries[key]=tmp
+ tmp=""
+ toggle="key"
+ else:
+ if toggle=="key":
+ if i=="+" : i="-"
+ else:
+ if i=="+" : i=" "
+ tmp=tmp+i
+ queries[key]=tmp
+ return queries
+
def add3(self):
- """Foldername"""
- metadata=parse_query_string(self.REQUEST['QUERY_STRING'])
- self.REQUEST.SESSION['metadata']=metadata
- vorschlag=[]
- if metadata.has_key('author'):
- vorschlag.append(metadata['author'][:5])
- if metadata.has_key('title'):
- vorschlag.append(metadata['title'][:5])
- if metadata.has_key('year'):
- vorschlag.append(metadata['year'])
-
-
- vorschlag_naming=string.join(vorschlag,"_")
-
-
- self.vorschlag_naming=unicode(vorschlag_naming,'ascii','ignore')
- if self.REQUEST.SESSION.has_key('no_upload'):
- self.REQUEST.SESSION['folder_name']=self.REQUEST.SESSION['path']
- return add5(self)
- else:
- newtemplate=PageTemplateFile('Products/OSA_system/zpt/OSAS_add_naming').__of__(self)
- return newtemplate()
-
+ """Foldername"""
+ metadata=parse_query_string(self.REQUEST['QUERY_STRING'])
+ self.REQUEST.SESSION['metadata']=metadata
+ vorschlag=[]
+
+ if metadata.has_key('author'):
+ vorschlag.append(metadata['author'][:5])
+ if metadata.has_key('title'):
+ vorschlag.append(metadata['title'][:5])
+ if metadata.has_key('year'):
+ vorschlag.append(metadata['year'])
+
+
+ vorschlag_naming=string.join(vorschlag,"_")
+
+
+ self.vorschlag_naming=unicode(vorschlag_naming,'ascii','ignore')
+ if self.REQUEST.SESSION.has_key('no_upload'):
+ self.REQUEST.SESSION['folder_name']=self.REQUEST.SESSION['path']
+ return add5(self)
+ else:
+ newtemplate=PageTemplateFile(os.path.join(package_home(globals()),'zpt','OSAS_add_naming')).__of__(self)
+ return newtemplate()
+
def add4(self):
- self.path=re.search(r"/mpiwg(.*)",self.REQUEST.SESSION['path']).group(1)
-
- self.folder_name=self.REQUEST['folder_name']
- # next has to be changed -> error if back button is used!!
- self.REQUEST.SESSION['path']=self.REQUEST.SESSION['path']+"/"+self.REQUEST['folder_name']
-
- self.REQUEST.SESSION['folder_name']=self.folder_name
- self.image_folder_name="pageimg"
- newtemplate=PageTemplateFile('Products/OSA_system/zpt/OSAS_upload').__of__(self)
- return newtemplate()
-
+ self.path=re.search(r"/mpiwg(.*)",self.REQUEST.SESSION['path']).group(1)
+
+ self.folder_name=self.REQUEST['folder_name']
+ # next has to be changed -> error if back button is used!!
+ self.REQUEST.SESSION['folder_name']=self.folder_name
+ #return self.REQUEST['submit']
+
+ try:
+ #os.popen('mkdir '+self.REQUEST.SESSION['path'])
+ os.mkdir(os.path.join(self.REQUEST.SESSION['path'],self.REQUEST['folder_name']))
+ os.chmod(os.path.join(self.REQUEST.SESSION['path'],self.REQUEST['folder_name']),0775)
+
+ except:
+
+ """nothing"""
+
+ if self.REQUEST['submit']=="upload images":
+ self.REQUEST.SESSION['path']=os.path.join(self.REQUEST.SESSION['path'],self.REQUEST['folder_name'])
+
+
+ self.image_folder_name="pageimg"
+ newtemplate=PageTemplateFile(os.path.join(package_home(globals()),'zpt','OSAS_upload')).__of__(self)
+
+ return newtemplate()
+
+ elif self.REQUEST['submit']=="upload pdf":
+ os.mkdir(os.path.join(self.REQUEST.SESSION['path'],self.REQUEST['folder_name']))
+ return addPdf(self,os.path.join(self.REQUEST.SESSION['path'],self.REQUEST['folder_name']))
+ else:
+ os.mkdir(os.path.join(self.REQUEST.SESSION['path'],self.REQUEST['folder_name']))
+ return addText(self,os.path.join(self.REQUEST.SESSION['path'],self.REQUEST['folder_name']))
+
+
def add5(self):
- """ADD INDEX.META"""
- newtemplate=PageTemplateFile('Products/OSA_system/zpt/OSAS_add_metadata').__of__(self)
- return newtemplate()
+ """ADD INDEX.META"""
+ try:
+ os.chmod(self.REQUEST.SESSION['path'],0775)
+ except:
+ pass
+
+ newtemplate=PageTemplateFile(os.path.join(package_home(globals()),'zpt','OSAS_add_metadata')).__of__(self)
+ return newtemplate()
def add6(self):
- metadata=parse_query_string(self.REQUEST['QUERY_STRING'])
- metadata['archive-path']=os.path.split(self.REQUEST.SESSION['path'])[0]
- #metadata['folder_name']=self.REQUEST.SESSION['folder_name']
- metadata['folder_name']=os.path.split(self.REQUEST.SESSION['path'])[1]
- metadata['content-type']="scanned document"
- self.reftype=self.REQUEST.SESSION['reftype']
- self.REQUEST.SESSION['add_metadata']=metadata
- self.add_metadata=metadata
- self.metadata=self.REQUEST.SESSION['metadata']
- self.metadataprint=""
- for tag in self.metadata.keys():
- self.metadataprint=self.metadataprint+"<"+tag+">"+self.metadata[tag]+""+tag+">\n"
-
- newtemplate=PageTemplateFile('Products/OSA_system/zpt/index_meta').__of__(self)
- newtemplate.content_type="text/plain"
- renderxml = newtemplate()
- if self.REQUEST.SESSION.has_key('no_upload'):
- metapath=self.REQUEST.SESSION['path']+"/index.meta"
- else:
- metapath=self.add_metadata['archive-path']+"/"+self.add_metadata['folder_name']+"/index.meta"
-
- f=open(metapath,'w')
- f.writelines(renderxml)
- f.close()
- os.chmod(metapath,0664)
- os.popen('chmod -R 0775 %s'%self.add_metadata['archive-path']+"/"+self.add_metadata['folder_name'])
- if self.REQUEST.SESSION.has_key('no_upload'):
-
- #newtemplate2=PageTemplateFile('/usr/local/mpiwg/Zope/Extensions/done',"text/html").__of__(self)
- return self.REQUEST.response.redirect(self.REQUEST['URL2']+"?path="+self.REQUEST.SESSION['path'])
- else:
+ metadata=parse_query_string(self.REQUEST['QUERY_STRING'])
+ metadata['archive-path']=os.path.split(self.REQUEST.SESSION['path'])[0]
+ #metadata['folder_name']=self.REQUEST.SESSION['folder_name']
+ metadata['folder_name']=os.path.split(self.REQUEST.SESSION['path'])[1]
+ metadata['content-type']="scanned document"
+ self.reftype=self.REQUEST.SESSION['reftype']
+ self.REQUEST.SESSION['add_metadata']=metadata
+ self.add_metadata=metadata
+ self.metadata=self.REQUEST.SESSION['metadata']
+ self.metadataprint=""
+ for tag in self.metadata.keys():
+ if tag!="":
+ self.metadataprint=self.metadataprint+"<"+tag+">"+self.metadata[tag]+""+tag+">\n"
+
+ newtemplate=PageTemplateFile(os.path.join(package_home(globals()),'zpt','index_meta')).__of__(self)
+ newtemplate.content_type="text/plain"
+ renderxml = newtemplate(encode='utf-8')
+
+
+ if self.REQUEST.SESSION.has_key('no_upload'):
+ metapath=self.REQUEST.SESSION['path']+"/index.meta"
+ else:
+ metapath=self.add_metadata['archive-path']+"/"+self.add_metadata['folder_name']+"/index.meta"
+
+ f=open(metapath,'w')
+ try:
+ f.write(renderxml.encode('utf-8'))
+ except:
+ f.write(unicode(renderxml,'latin-1').encode('utf-8'))
+ #f.write(renderxml)
+
+ f.close()
+ os.chmod(metapath,0664)
+ os.popen('chmod -R 0775 %s'%self.add_metadata['archive-path']+"/"+self.add_metadata['folder_name'])
+ if self.REQUEST.SESSION.has_key('no_upload'):
+
+ #newtemplate2=PageTemplateFile('/usr/local/mpiwg/Zope/Extensions/done',"text/html").__of__(self)
+ return self.REQUEST.response.redirect(self.REQUEST['URL2']+"?path="+self.REQUEST.SESSION['path'])
+ else:
#print self.add_metadata['archive-path']
- self.viewpath=re.search(r"/mpiwg/online/(.*)",self.add_metadata['archive-path']).group(1)
- newtemplate2=PageTemplateFile('Products/OSA_system/zpt/OSAS_saved').__of__(self)
-
-
- newtemplate2.content_type="text/html"
- self.REQUEST.response.setHeader('Content-Type','text/html')
-
-
- return newtemplate2()
-
-
+ self.viewpath=re.search(r"/mpiwg/online/(.*)",self.add_metadata['archive-path']).group(1)
+
+ if (self.REQUEST.SESSION.has_key('no_upload')) and (self.REQUEST.SESSION['no_upload']=="text"):
+ """text upload"""
+ return 1
+ else:
+ newtemplate2=PageTemplateFile(os.path.join(package_home(globals()),'zpt','OSAS_saved')).__of__(self)
+ newtemplate2.content_type="text/html"
+ self.REQUEST.response.setHeader('Content-Type','text/html')
+ return newtemplate2()
+
def date(self):
- return strftime("%d.%m.%Y",localtime())
+ return strftime("%d.%m.%Y",localtime())
def addPresentation(self,path):
- """add presentation to the path"""
-
- dom=xml.dom.minidom.parse(path+"/index.meta")
-
-
- try:
- author=archive.getText(dom.getElementsByTagName('author')[0].childNodes)
- except:
- try:
- author=archive.getText(dom.getElementsByTagName('Author')[0].childNodes)
- except:
- author=archive.getText(dom.getElementsByTagName('Editor')[0].childNodes)
-
- title=archive.getText(dom.getElementsByTagName('title')[0].childNodes)
- try:
- date=archive.getText(dom.getElementsByTagName('year')[0].childNodes)
- except:
- try:
- date=archive.getText(dom.getElementsByTagName('Year')[0].childNodes)
- except:
- date=archive.getText(dom.getElementsByTagName('date')[0].childNodes)
- i=1
- while os.path.exists("%02d-presentation"%i):
- i+=1
- self.REQUEST.SESSION['presentationname']="%02d-presentation"%i
- self.REQUEST.SESSION['path']=path
- self.REQUEST.SESSION['xmlvorschlag']="""
- %s
- %s
- %s
- yes
+ """add presentation to the path"""
+
+ dom=xml.dom.minidom.parse(path+"/index.meta")
+
+
+ try:
+ author=archive.getText(dom.getElementsByTagName('author')[0].childNodes)
+ except:
+ try:
+ author=archive.getText(dom.getElementsByTagName('Author')[0].childNodes)
+ except:
+ try:
+ author=archive.getText(dom.getElementsByTagName('Editor')[0].childNodes)
+ except:
+ author=""
+ try:
+ title=archive.getText(dom.getElementsByTagName('title')[0].childNodes)
+ except:
+ title=""
+
+ try:
+ date=archive.getText(dom.getElementsByTagName('year')[0].childNodes)
+ except:
+ try:
+ date=archive.getText(dom.getElementsByTagName('Year')[0].childNodes)
+ except:
+ try:
+ date=archive.getText(dom.getElementsByTagName('date')[0].childNodes)
+ except:
+ date=""
+ i=1
+ while os.path.exists(path+"/%02d-presentation"%i):
+ i+=1
+ self.REQUEST.SESSION['presentationname']="%02d-presentation"%i
+ self.REQUEST.SESSION['path']=path
+
+ tmpTxt="""
+
+ %s
+ %s
+ %s
+ yes
"""%(author,title,date)
-
- newtemplate=PageTemplateFile('Products/OSA_system/zpt/addPresentation').__of__(self)
- return newtemplate()
+
+ self.REQUEST.SESSION['xmlvorschlag']=tmpTxt.encode('utf-8')
+
+ newtemplate=PageTemplateFile(os.path.join(package_home(globals()),'zpt','addPresentation')).__of__(self)
+ return newtemplate()
def addPresentation2(self):
- """add presentation """
- folder_name=self.REQUEST['folder_name']
- #print self.REQUEST['folder_name']
- content_description=self.REQUEST['content_description']
-
- path=self.REQUEST.SESSION['path']
-
- if not self.REQUEST.has_key('fileupload'):
- xmlinfo=self.REQUEST['xmltext']
- file_name="info.xml"
-
- else:
- file_name=self.REQUEST['fileupload'].filename
- xmlinfo=self.REQUEST.form['fileupload'].read()
- # hack Multipart auswertung funktioniert nicht ausser bei mozilla
- file_name="info.xml"
- xmlinfo=self.REQUEST['xmltext']
- try:
- os.mkdir(path+"/"+folder_name)
- except:
- """nothing"""
- #print "NAME:",file_name
- f=open(path+"/"+folder_name+"/"+file_name,"w")
- f.write(xmlinfo)
- f.close()
- try:
- os.chmod(path+"/"+folder_name,0755)
- except:
- """NO"""
-
- os.chmod(path+"/"+folder_name+"/"+file_name,0644)
- addDirsToIndexMeta(path,folder_name,content_description,'presentation')
-
- return self.REQUEST.RESPONSE.redirect(self.REQUEST['URL2']+'?path='+path)
-
-def addText(self,path):
- """add fulltext to the path"""
- self.REQUEST.SESSION['existing_names']=['pageimg'] # to be done generate list of existing text files
- self.REQUEST.SESSION['path']=path
- newtemplate=PageTemplateFile('Products/OSA_system/zpt/addText').__of__(self)
- return newtemplate()
+ """add presentation """
+ folder_name=self.REQUEST['folder_name']
+ #print self.REQUEST['folder_name']
+ content_description=self.REQUEST['content_description']
+
+ path=self.REQUEST.SESSION['path']
+
+ if not self.REQUEST.has_key('fileupload'):
+ xmlinfo=self.REQUEST['xmltext']
+ file_name="info.xml"
+
+ else:
+ file_name=self.REQUEST['fileupload'].filename
+ xmlinfo=self.REQUEST.form['fileupload'].read()
+ # hack Multipart auswertung funktioniert nicht ausser bei mozilla
+ file_name="info.xml"
+ xmlinfo=self.REQUEST['xmltext']
+ try:
+ os.mkdir(path+"/"+folder_name)
+ except:
+ """nothing"""
+ #print "NAME:",file_name
+ f=open(path+"/"+folder_name+"/"+file_name,"w")
+ f.write(xmlinfo)
+ f.close()
+ try:
+ os.chmod(path+"/"+folder_name,0775)
+ except:
+ """NO"""
+
+ os.chmod(path+"/"+folder_name+"/"+file_name,0664)
+ addDirsToIndexMeta(path,folder_name,content_description,'presentation')
+
+ return self.REQUEST.RESPONSE.redirect(self.REQUEST['URL2']+'?path='+path)
+
+
+def addPdf(self,path,folder=None):
+ """add fulltext to the path"""
+ self.REQUEST.SESSION['existing_names']=['pageimg'] # to be done generate list of existing text files
+ self.REQUEST.SESSION['pathnew']=path
+ newtemplate=PageTemplateFile(os.path.join(package_home(globals()),'zpt','addPdf')).__of__(self)
+ return newtemplate()
+
+def addPdf2(self):
+ """addtext"""
+ folder_name="pdf" # foldername fixed
+
+ if self.REQUEST['file_name']=="":
+ file_name=self.REQUEST['fileupload'].filename
+ else:
+ file_name=self.REQUEST['file_name']
+
+ #print self.REQUEST['folder_name']
+ content_description=self.REQUEST['content_description']
+ path=self.REQUEST.SESSION['pathnew']
+
+ filedata=self.REQUEST.form['fileupload'].read()
+ try:
+ os.mkdir(path+"/"+folder_name)
+ except:
+ """nothing"""
+ f=open(path+"/"+folder_name+"/"+file_name,"w")
+ f.write(filedata)
+ f.close()
+ os.chmod(path+"/"+folder_name,0755)
+ os.chmod(path+"/"+folder_name+"/"+file_name,0644)
+ addDirsToIndexMeta(path,folder_name,content_description,'pdf')
+
+ return self.REQUEST.RESPONSE.redirect(self.REQUEST['URL2']+'?path='+path)
+
+def addText(self,path,folder=None):
+ """add fulltext to the path"""
+ self.REQUEST.SESSION['existing_names']=['pageimg'] # to be done generate list of existing text files
+ self.REQUEST.SESSION['pathnew']=path
+ newtemplate=PageTemplateFile(os.path.join(package_home(globals()),'zpt','addText')).__of__(self)
+ return newtemplate()
def addText2(self):
- folder_name=self.REQUEST['folder_name']
- #print self.REQUEST['folder_name']
- content_description=self.REQUEST['content_description']
- path=self.REQUEST.SESSION['path']
- file_name=self.REQUEST['fileupload'].filename
- filedata=self.REQUEST.form['fileupload'].read()
- os.mkdir(path+"/"+folder_name)
- f=open(path+"/"+folder_name+"/"+file_name,"w")
- f.write(filedata)
- f.close()
- os.chmod(path+"/"+folder_name,0755)
- os.chmod(path+"/"+folder_name+"/"+file_name,0644)
- addDirsToIndexMeta(path,folder_name,content_description,'fulltext')
+ """addtext"""
+ folder_name=self.REQUEST['folder_name']
+ #print self.REQUEST['folder_name']
+ content_description=self.REQUEST['content_description']
+ path=self.REQUEST.SESSION['pathnew']
+ file_name=self.REQUEST['fileupload'].filename
+ filedata=self.REQUEST.form['fileupload'].read()
+ os.mkdir(path+"/"+folder_name)
+ f=open(path+"/"+folder_name+"/"+file_name,"w")
+ f.write(filedata)
+ f.close()
+ os.chmod(path+"/"+folder_name,0755)
+ os.chmod(path+"/"+folder_name+"/"+file_name,0644)
+ addDirsToIndexMeta(path,folder_name,content_description,'fulltext')
- return self.REQUEST.RESPONSE.redirect(self.REQUEST['URL2']+'?path='+path)
+ return self.REQUEST.RESPONSE.redirect(self.REQUEST['URL2']+'?path='+path)
def addTextExternal(self,path,texturl,version):
- """hinzufügen eines externen textes"""
- try: #neue text version einlesen
- texttemp=urllib.urlopen(texturl).readlines()
- text=""
- for line in texttemp:
- text=text+line
- except: #fehler beim lesen des textes
- return "ERROR: cannot read: %s"%texturl
- if TextExternalError(text): #kein xml header
- return "ERROR: cannot read: %s"%texturl, "received:",text
- textpath=getNewTextPath(path) #erzeuge neuen Ornder für den Text
- splitted=string.split(texturl,"/")
- name=splitted[len(splitted)-1] #Name des XML-files
- try:
- writefile=file(path+"/"+textpath+"/"+name,"w")
- except:
- return"ERROR: cannot write: %s"%path+"/"+textpath+"/"+name
- writefile.write(text)
- writefile.close()
- os.chmod(path+"/"+textpath+"/"+name,0644)
-
- #add new file to XML
- dom=xml.dom.minidom.parse(path+"/index.meta")
- node=dom.getElementsByTagName('resource')[0] #getNode
-
- subnode=dom.createElement('dir')
-
- namenode=dom.createElement('name')
- namenodetext=dom.createTextNode(textpath)
- namenode.appendChild(namenodetext)
- subnode.appendChild(namenode)
-
- descriptionnode=dom.createElement('description')
- descriptionnodetext=dom.createTextNode('archimedes text:'+version)
- descriptionnode.appendChild(descriptionnodetext)
- subnode.appendChild(descriptionnode)
-
- contentnode=dom.createElement('content-type')
- contentnodetext=dom.createTextNode('fulltext')
- contentnode.appendChild(contentnodetext)
- subnode.appendChild(contentnode)
-
- node.appendChild(subnode)
-
- writefile=file(path+"/index.meta","w")
- writefile.write(dom.toxml().encode('utf-8'))
- writefile.close()
-
- #change texttool tag
- dom=xml.dom.minidom.parse(path+"/index.meta")
- node=dom.getElementsByTagName('meta')[0] #getNode
-
- try: #texttool existiert schon
- subnode=node.getElementsByTagName('texttool')[0]
- except: #wenn nicht Fehler ausgeben
- return "ERROR:no presentation configured yet, user Web Front End to do so!"
-
-
- try:
- texttoolnodelist=subnode.getElementsByTagName('text')
-
- if not len(texttoolnodelist)==0: #texttool tag existiert schon, dann löschen
- subsubnode=subnode.removeChild(texttoolnodelist[0])
- subsubnode.unlink()
- except:
- """nothing"""
- # text neu anlegen
- textfoldernode=dom.createElement('text')
- textfoldernodetext=dom.createTextNode(textpath+"/"+name)
- textfoldernode.appendChild(textfoldernodetext)
- subnode.appendChild(textfoldernode)
-
- #index.meta ausgeben
- writefile=file(path+"/index.meta","w")
- writefile.write(dom.toxml().encode('utf-8'))
- writefile.close()
-
- #registrieren
- return urllib.urlopen("http://nausikaa2.rz-berlin.mpg.de:86/cgi-bin/toc/admin/reg.cgi?path=%s"%path).readlines()
-
-
+ """hinzufügen eines externen textes"""
+ try: #neue text version einlesen
+ texttemp=urllib.urlopen(texturl).readlines()
+ text=""
+ for line in texttemp:
+ text=text+line
+ except: #fehler beim lesen des textes
+ return "ERROR: cannot read: %s"%texturl
+ if TextExternalError(text): #kein xml header
+ return "ERROR: cannot read: %s"%texturl, "received:",text
+ textpath=getNewTextPath(path) #erzeuge neuen Ornder für den Text
+ splitted=string.split(texturl,"/")
+ name=splitted[len(splitted)-1] #Name des XML-files
+ try:
+ writefile=file(path+"/"+textpath+"/"+name,"w")
+ except:
+ return"ERROR: cannot write: %s"%path+"/"+textpath+"/"+name
+ writefile.write(text)
+ writefile.close()
+ os.chmod(path+"/"+textpath+"/"+name,0644)
+
+ #add new file to XML
+ dom=xml.dom.minidom.parse(path+"/index.meta")
+ node=dom.getElementsByTagName('resource')[0] #getNode
+
+ subnode=dom.createElement('dir')
+
+ namenode=dom.createElement('name')
+ namenodetext=dom.createTextNode(textpath)
+ namenode.appendChild(namenodetext)
+ subnode.appendChild(namenode)
+
+ descriptionnode=dom.createElement('description')
+ descriptionnodetext=dom.createTextNode('archimedes text:'+version)
+ descriptionnode.appendChild(descriptionnodetext)
+ subnode.appendChild(descriptionnode)
+
+ contentnode=dom.createElement('content-type')
+ contentnodetext=dom.createTextNode('fulltext')
+ contentnode.appendChild(contentnodetext)
+ subnode.appendChild(contentnode)
+
+ node.appendChild(subnode)
+
+ writefile=file(path+"/index.meta","w")
+ writefile.write(dom.toxml(encoding="UTF-8"))
+ writefile.close()
+
+ #change texttool tag
+ dom=xml.dom.minidom.parse(path+"/index.meta")
+ node=dom.getElementsByTagName('meta')[0] #getNode
+
+ try: #texttool existiert schon
+ subnode=node.getElementsByTagName('texttool')[0]
+ except: #wenn nicht Fehler ausgeben
+ return "ERROR:no presentation configured yet, user Web Front End to do so!"
+
+
+ try:
+ texttoolnodelist=subnode.getElementsByTagName('text')
+
+ if not len(texttoolnodelist)==0: #texttool tag existiert schon, dann löschen
+ subsubnode=subnode.removeChild(texttoolnodelist[0])
+ subsubnode.unlink()
+ except:
+ """nothing"""
+ # text neu anlegen
+ textfoldernode=dom.createElement('text')
+ textfoldernodetext=dom.createTextNode(textpath+"/"+name)
+ textfoldernode.appendChild(textfoldernodetext)
+ subnode.appendChild(textfoldernode)
+
+ #index.meta ausgeben
+ writefile=file(path+"/index.meta","w")
+ writefile.write(dom.toxml(encoding="UTF-8"))
+ writefile.close()
+
+ #registrieren
+ return urllib.urlopen("http://nausikaa2.rz-berlin.mpg.de:86/cgi-bin/toc/admin/reg.cgi?path=%s"%path).readlines()
+
+
def TextExternalError(text):
- firsts=text[0:10]
- #print firsts
- try:
- match=re.search(r".*> /tmp/sc.out &"% re.sub('/mpiwg/online/','',self.REQUEST['path']+"/"+self.REQUEST['image']))
-
- #return self.REQUEST.RESPONSE.redirect(self.REQUEST['URL2']+'?path='+self.REQUEST['path'])
-
+ """erstellt bzw. ändert texttool meta tag"""
+ dom=xml.dom.minidom.parse(path+"/index.meta")
+ node=dom.getElementsByTagName('meta')[0] #getNode
+
+
+ subnodelist=node.getElementsByTagName('texttool')
+ if not len(subnodelist)==0: #texttool tag existiert schon, dann löschen
+ subnode=node.removeChild(subnodelist[0])
+ subnode.unlink()
+
+ subnode=dom.createElement('texttool') #neu erzeugen
+
+
+ presentfile=os.listdir(path+"/"+self.REQUEST['presentation'])[0]
+
+
+ displaynode=dom.createElement('display')
+ displaynodetext=dom.createTextNode('yes')
+ displaynode.appendChild(displaynodetext)
+ subnode.appendChild(displaynode)
+
+ if self.REQUEST.has_key('image'):
+ namenode=dom.createElement('image')
+ namenodetext=dom.createTextNode(self.REQUEST['image'])
+ namenode.appendChild(namenodetext)
+ subnode.appendChild(namenode)
+
+ if self.REQUEST.has_key('text'):
+ textfile=os.listdir(path+"/"+self.REQUEST['text'])[0]
+ textfoldernode=dom.createElement('text')
+ textfoldernodetext=dom.createTextNode(path+"/"+self.REQUEST['text']+"/"+textfile)
+ textfoldernode.appendChild(textfoldernodetext)
+ subnode.appendChild(textfoldernode)
+
+ if self.REQUEST.has_key('external'):#USE CVS instead of local text
+ textfoldernode=dom.createElement('text')
+ textfoldernodetext=dom.createTextNode(self.REQUEST.SESSION['externxml'])
+ textfoldernode.appendChild(textfoldernodetext)
+ subnode.appendChild(textfoldernode)
+
+ if self.REQUEST.has_key('pagebreak'):
+ pagebreaknode=dom.createElement('pagebreak')
+ pagebreaknodetext=dom.createTextNode(self.REQUEST['pagebreak'])
+ pagebreaknode.appendChild(pagebreaknodetext)
+ subnode.appendChild(pagebreaknode)
+
+ if self.REQUEST.has_key('presentation'):
+ presentationnode=dom.createElement('presentation')
+ presentationnodetext=dom.createTextNode(self.REQUEST['presentation']+"/"+presentfile)
+ presentationnode.appendChild(presentationnodetext)
+ subnode.appendChild(presentationnode)
+
+
+ if self.REQUEST.has_key('xslt'):
+ if not self.REQUEST['xslt']=="":
+ xsltnode=dom.createElement('xslt')
+ xsltnodetext=dom.createTextNode(self.REQUEST['xslt'])
+ xsltnode.appendChild(xsltnodetext)
+ subnode.appendChild(xsltnode)
+
+
+ if self.REQUEST.has_key('thumbtemplate'):
+ if not self.REQUEST['thumbtemplate']=="":
+ xsltnode=dom.createElement('thumbtemplate')
+ xsltnodetext=dom.createTextNode(self.REQUEST['thumbtemplate'])
+ xsltnode.appendChild(xsltnodetext)
+ subnode.appendChild(xsltnode)
+
+ if self.REQUEST.has_key('topbar'):
+ if not self.REQUEST['topbar']=="":
+ xsltnode=dom.createElement('toptemplate')
+ xsltnodetext=dom.createTextNode(self.REQUEST['topbar'])
+ xsltnode.appendChild(xsltnodetext)
+ subnode.appendChild(xsltnode)
+
+ if self.REQUEST.has_key('startpage'):
+ if not self.REQUEST['startpage']=="":
+ xsltnode=dom.createElement('startpage')
+ xsltnodetext=dom.createTextNode(self.REQUEST['startpage'])
+ xsltnode.appendChild(xsltnodetext)
+ subnode.appendChild(xsltnode)
+
+ if self.REQUEST.has_key('project'):
+ if not self.REQUEST['project']=="":
+ xsltnode=dom.createElement('project')
+ xsltnodetext=dom.createTextNode(self.REQUEST['project'])
+ xsltnode.appendChild(xsltnodetext)
+ subnode.appendChild(xsltnode)
+
+ if self.REQUEST.has_key('digiliburlprefix'):
+ if not self.REQUEST['digiliburlprefix']=="":
+ xsltnode=dom.createElement('digiliburlprefix')
+ xsltnodetext=dom.createTextNode(self.REQUEST['digiliburlprefix'])
+ xsltnode.appendChild(xsltnodetext)
+ subnode.appendChild(xsltnode)
+
+ node.appendChild(subnode)
+
+ try:
+ node2=node.getElementsByTagName('bib')[0]
+ subs=node2.getElementsByTagName('lang')
+ for sub in subs:
+ node2.removeChild(sub)
+ except:
+ """nothing"""
+ try:
+ main=dom.getElementsByTagName('bib')[0]
+ node=dom.createElement('lang')
+ textnode=dom.createTextNode(self.REQUEST['lang'])
+ node.appendChild(textnode)
+ main.appendChild(node)
+ except:
+ try:
+ subs=dom.getElementsByTagName('lang')
+ main=dom.getElementsByTagName('resource')[0]
+ for sub in subs:
+ main.removeChild(sub)
+ except:
+ """nothing"""
+
+ try:
+ main=dom.getElementsByTagName('resource')[0]
+ node=dom.createElement('lang')
+ textnode=dom.createTextNode(self.REQUEST['lang'])
+ #print "LANG:",self.REQUEST['lang']
+ node.appendChild(textnode)
+ main.appendChild(node)
+ except:
+ """nothing"""
+
+ writefile=file(path+"/index.meta","w")
+ writefile.write(dom.toxml(encoding="UTF-8"))
+ writefile.close()
+
+
+
+ urllib.urlopen("http://nausikaa2.rz-berlin.mpg.de:86/cgi-bin/toc/admin/reg.cgi?path=%s"%path).readlines()
+
+ if self.REQUEST.has_key('image'): # falls bilder
+ path=re.sub('//','/',self.REQUEST['path']) # falls '//' im Pfad
+ dlpath = re.sub('/mpiwg/online/','',path)+"/"+self.REQUEST['image']
+
+ 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 )
+ 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=100 -sync >> /tmp/sc.out &"%dlpath ).read()
+ zLOG.LOG('OSAS (combine)',zLOG.INFO,ret)
+
+
+
+ else: # falls keine Bilder (bug in reg.cgi info file ersetzen)
+ f=file("/tmp/tmp_info.xml","w")
+ tmp=patchedInfoXML(self.REQUEST['path'])
+ f.write(tmp.encode('utf-8'))
+ f.close()
+ splitted=path.split("/")
+ fn=splitted[len(splitted)-1]
+ remotePath="archive@nausikaa2.rz-berlin.mpg.de:/usr/local/share/archimedes/web/docs/proj/echo/1/docs/"+fn+"/info.xml"
+ os.popen("scp /tmp/tmp_info.xml %s"%remotePath)
+
+def patchedInfoXML(path):
+ dom=xml.dom.minidom.parse(path+"/index.meta")
+
+ ret="\n"
+ ret+="%s\n"%archive.getText(dom.getElementsByTagName('text')[0].childNodes)
+ ret+="%s\n"%archive.getText(dom.getElementsByTagName('pagebreak')[0].childNodes)
+ ret+="%s\n"%archive.getText(dom.getElementsByTagName('display')[0].childNodes)
+ try:
+ ret+="%s\n"%archive.getText(dom.getElementsByTagName('toptemplate')[0].childNodes)
+ except:
+ """not"""
+ try:
+ ret+="%s\n"%archive.getText(dom.getElementsByTagName('thumbtemplate')[0].childNodes)
+ except:
+ """not"""
+ try:
+ ret+="%s\n"%archive.getText(dom.getElementsByTagName('startpage')[0].childNodes)
+ except:
+ """not"""
+
+ ret+="%s\n"%archive.getText(dom.getElementsByTagName('lang')[0].childNodes)
+ try:
+ ret+="%s\n"%archive.getText(dom.getElementsByTagName('author')[0].childNodes)
+ except:
+ """not"""
+ try:
+ ret+="%s\n"%archive.getText(dom.getElementsByTagName('title')[0].childNodes)
+ except:
+ """not"""
+
+ ret+=""
+
+ return ret