--- OSAS/OSA_system/OSAS_add.py 2004/03/01 17:44:29 1.11
+++ OSAS/OSA_system/OSAS_add.py 2004/07/01 07:46:42 1.32
@@ -1,25 +1,39 @@
-#BAUSTELLE
+#Neue Version Begin 5.4.2004
"""Methoden zum hinzufügen von Dokumenten ins Archiv"""
-import archive
+from OSAS_helpers import readArchimedesXML
+try:
+ import archive
+except:
+ print "archive not imported"
+
import os
+
from Products.PageTemplates.PageTemplateFile import PageTemplateFile
from Products.PageTemplates.PageTemplate import PageTemplate
import string
import urllib
import xml.dom.minidom
-
-#referencetypes=['Book','Bic','Journal Article','Manuscript','jiji']
+from time import localtime,strftime
+from Globals import package_home
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=['Book','Journal Article','Manuscript']
- newtemplate=PageTemplateFile('Products/OSA_system/OSAS_add_new').__of__(self)
+ #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.REQUEST.SESSION['path']=self.REQUEST['path']
if no_upload==0:
self.REQUEST.SESSION['no_upload']='yes'
@@ -28,15 +42,14 @@ def add(self, no_upload=0):
del self.REQUEST.SESSION['no_upload']
return newtemplate()
- return self.referencetypes
def getISO():
"""ISO"""
try:
- f=file('/usr/local/mpiwg/Zope/lib/python/Products/OSA_system/iso639-1.inc','r').readlines()
- #f=file('OSA_system/iso639-1.inc','r').readlines()
+ f=file(os.path.join(package_home(globals()),'iso639-1.inc'),'r').readlines()
+
ret={}
for lineraw in f:
line=lineraw.encode('ascii','replace')
@@ -45,16 +58,20 @@ def getISO():
ret[key]=value
except:
ret={}
- return ret
+ return ret
+
def add2(self):
self.reftype=self.REQUEST['Reference Type']
- self.REQUEST.SESSION['reftype']=self.reftype
- self.bibdata={'Book':['author','year','title','series editor','series title','series volume','number of pages','city','publisher','edition','number of volumes','translator','ISBN ISSN'],
-'Journal Article':['author','year','title','journal','volume','issue','pages','alternate journal','call number'],
-'Manuscript':['author','year','title','location','signature','pages','editorial remarks','description','keywords']}
-
- self.fields=self.bibdata[self.reftype]
+ 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()
@@ -64,7 +81,7 @@ def add2(self):
#sorted=listed.sort()
#print sorted
- newtemplate=PageTemplateFile('Products/OSA_system/OSAS_add_bibdata').__of__(self)
+ newtemplate=PageTemplateFile('Products/OSA_system/zpt/OSAS_add_bibdata').__of__(self)
return newtemplate()
#return self.fields
@@ -98,13 +115,24 @@ def add3(self):
"""Foldername"""
metadata=parse_query_string(self.REQUEST['QUERY_STRING'])
self.REQUEST.SESSION['metadata']=metadata
- vorschlag_naming=metadata['author'][:5]+"_"+metadata['title'][:5]+"_"+metadata['year']
- self.vorschlag_naming=vorschlag_naming.decode('ascii','ignore')
+ 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/OSAS_add_naming').__of__(self)
+ newtemplate=PageTemplateFile('Products/OSA_system/zpt/OSAS_add_naming').__of__(self)
return newtemplate()
@@ -112,18 +140,35 @@ def add4(self):
self.path=re.search(r"/mpiwg(.*)",self.REQUEST.SESSION['path']).group(1)
self.folder_name=self.REQUEST['folder_name']
- # netx has to be changed -> error if back button is used!!
- self.REQUEST.SESSION['path']=self.REQUEST.SESSION['path']+"/"+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.mkdir(self.REQUEST.SESSION['path'])
+ os.chmod(self.REQUEST.SESSION['path'],0774)
+ except:
+ """nothing"""
+ if self.REQUEST['submit']=="upload images":
+ self.REQUEST.SESSION['path']=os.path.join(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/OSAS_upload').__of__(self)
- return newtemplate()
+ self.image_folder_name="pageimg"
+ newtemplate=PageTemplateFile('Products/OSA_system/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/OSAS_add_metadata').__of__(self)
+ newtemplate=PageTemplateFile('Products/OSA_system/zpt/OSAS_add_metadata').__of__(self)
return newtemplate()
def add6(self):
@@ -138,9 +183,10 @@ def add6(self):
self.metadata=self.REQUEST.SESSION['metadata']
self.metadataprint=""
for tag in self.metadata.keys():
- self.metadataprint=self.metadataprint+"<"+tag+">"+self.metadata[tag]+""+tag+">\n"
+ if tag!="":
+ self.metadataprint=self.metadataprint+"<"+tag+">"+self.metadata[tag]+""+tag+">\n"
- newtemplate=PageTemplateFile('Products/OSA_system/index_meta').__of__(self)
+ 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'):
@@ -159,18 +205,18 @@ def add6(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/OSAS_saved').__of__(self)
+ 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('Products/OSA_system/zpt/OSAS_saved').__of__(self)
+ newtemplate2.content_type="text/html"
+ self.REQUEST.response.setHeader('Content-Type','text/html')
+ return newtemplate2()
- newtemplate2.content_type="text/html"
- self.REQUEST.response.setHeader('Content-Type','text/html')
-
- return newtemplate2()
-
-
-from time import localtime,strftime
def date(self):
return strftime("%d.%m.%Y",localtime())
@@ -188,16 +234,25 @@ def addPresentation(self,path):
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:
+ 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:
- date=archive.getText(dom.getElementsByTagName('date')[0].childNodes)
+ try:
+ date=archive.getText(dom.getElementsByTagName('date')[0].childNodes)
+ except:
+ date=""
i=1
while os.path.exists("%02d-presentation"%i):
i+=1
@@ -210,7 +265,7 @@ def addPresentation(self,path):
yes
"""%(author,title,date)
- newtemplate=PageTemplateFile('Products/OSA_system/addPresentation').__of__(self)
+ newtemplate=PageTemplateFile('Products/OSA_system/zpt/addPresentation').__of__(self)
return newtemplate()
def addPresentation2(self):
@@ -239,24 +294,64 @@ def addPresentation2(self):
f=open(path+"/"+folder_name+"/"+file_name,"w")
f.write(xmlinfo)
f.close()
- os.chmod(path+"/"+folder_name,0755)
+ 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):
+
+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['path']=path
- newtemplate=PageTemplateFile('Products/OSA_system/addText').__of__(self)
+ self.REQUEST.SESSION['pathnew']=path
+ newtemplate=PageTemplateFile('Products/OSA_system/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('Products/OSA_system/zpt/addText').__of__(self)
return newtemplate()
def addText2(self):
+ """addtext"""
folder_name=self.REQUEST['folder_name']
#print self.REQUEST['folder_name']
content_description=self.REQUEST['content_description']
- path=self.REQUEST.SESSION['path']
+ path=self.REQUEST.SESSION['pathnew']
file_name=self.REQUEST['fileupload'].filename
filedata=self.REQUEST.form['fileupload'].read()
os.mkdir(path+"/"+folder_name)
@@ -373,7 +468,7 @@ def addImages(self,path):
"""Imagesfolder to the path"""
self.REQUEST.SESSION['existing_names']=['pageimg'] # to be done generate list of existing pageimages files
self.REQUEST.SESSION['path']=path
- newtemplate=PageTemplateFile('Products/OSA_system/OSAS_addImages').__of__(self)
+ newtemplate=PageTemplateFile('Products/OSA_system/zpt/OSAS_addImages').__of__(self)
return newtemplate()
def addImages2(self):
@@ -387,7 +482,7 @@ def addImages2(self):
self.content_type='images'
addDirsToIndexMeta(self.REQUEST.SESSION['path'],self.image_folder_name,self.content_description,self.content_type)
self.REQUEST.SESSION['path']=re.search(r"/mpiwg(.*)",self.REQUEST.SESSION['path']).group(1)
- newtemplate=PageTemplateFile('Products/OSA_system/OSAS_upload2').__of__(self)
+ newtemplate=PageTemplateFile('Products/OSA_system/zpt/OSAS_upload2').__of__(self)
return newtemplate()
@@ -440,49 +535,10 @@ def readArchimedesXML(folder):
return dict[folder]
else:
return ""
-def combineTextImage(self,path):
- """gibt input formular zur erstellung des texttools meta tag aus"""
- files = os.listdir(path)
-
- texts=[]
- imagefolders=[]
- presentationfolders=[]
-
- splitted=path.split("/")
- externxml=readArchimedesXML(splitted[len(splitted)-1])
-
- for filename in files:
- #print "FN",filename
- if archive.isdigilib2(path+"/"+filename):
- imagefolders.append(filename)
-
- if archive.isFullText(path,filename):
- #print "HI"
- texts.append(filename)
- if archive.isPresentation(path,filename):
- presentationfolders.append(filename)
- dom=xml.dom.minidom.parse(path+"/index.meta")
- try:
- filelanguage=archive.getText(dom.getElementsByTagName('lang')[0].childNodes)
- except:
- filelanguage=""
- self.REQUEST.SESSION['isolist']=getISO()
- tmp=getISO().keys()
- tmp.sort()
- self.REQUEST.SESSION['isolistsort']=tmp
- self.REQUEST.SESSION['path']=path
- self.REQUEST.SESSION['texts']=texts
- self.REQUEST.SESSION['imagefolders']=imagefolders
- self.REQUEST.SESSION['presentationfolders']=presentationfolders
- self.REQUEST.SESSION['filelanguage']=filelanguage
- self.REQUEST.SESSION['externxml']=externxml
- newtemplate=PageTemplateFile('Products/OSA_system/ImageandText').__of__(self)
- return newtemplate()
-
def combineTextImage2(self,path):
"""erstellt bzw. ändert texttool meta tag"""
dom=xml.dom.minidom.parse(path+"/index.meta")
@@ -544,7 +600,7 @@ def combineTextImage2(self,path):
xsltnode.appendChild(xsltnodetext)
subnode.appendChild(xsltnode)
- """
+
if self.REQUEST.has_key('thumbtemplate'):
if not self.REQUEST['thumbtemplate']=="":
xsltnode=dom.createElement('thumbtemplate')
@@ -554,12 +610,31 @@ def combineTextImage2(self,path):
if self.REQUEST.has_key('topbar'):
if not self.REQUEST['topbar']=="":
- xsltnode=dom.createElement('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)
@@ -567,7 +642,6 @@ def combineTextImage2(self,path):
node2=node.getElementsByTagName('bib')[0]
subs=node2.getElementsByTagName('lang')
for sub in subs:
- print "X",sub
node2.removeChild(sub)
except:
"""nothing"""
@@ -575,7 +649,6 @@ def combineTextImage2(self,path):
main=dom.getElementsByTagName('bib')[0]
node=dom.createElement('lang')
textnode=dom.createTextNode(self.REQUEST['lang'])
- print "LANG:",lang
node.appendChild(textnode)
main.appendChild(node)
except:
@@ -604,8 +677,49 @@ def combineTextImage2(self,path):
urllib.urlopen("http://nausikaa2.rz-berlin.mpg.de:86/cgi-bin/toc/admin/reg.cgi?path=%s"%path).readlines()
- #return urllib.quote("http://nausikaa2.rz-berlin.mpg.de:86/cgi-bin/toc/admin/reg.cgi?path=%s"%path)
- os.popen("ssh nausikaa2.rz-berlin.mpg.de /usr/local/mpiwg/scripts/scaleomat.pl %s /mpiwg/temp/online/scaled/thumb 90 >> /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'])
+
+ if self.REQUEST.has_key('image'): # falls bilder
+ os.popen("ssh archive@nausikaa2.rz-berlin.mpg.de /usr/local/mpiwg/scripts/scaleomat.pl %s /mpiwg/temp/online/scaled/thumb 90 >> /tmp/sc.out &"% re.sub('/mpiwg/online/','',self.REQUEST['path']+"/"+self.REQUEST['image']))
+
+ else: # falls keine Bilder (bug in reg.cgi info file ersetzen)
+ f=file("/tmp/tmp_info.xml","w")
+ f.write(patchedInfoXML(self.REQUEST['path']))
+ 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