--- OSAS/OSA_system/OSAS_add.py 2003/10/13 22:24:35 1.5
+++ OSAS/OSA_system/OSAS_add.py 2004/04/08 16:50:01 1.20
@@ -1,25 +1,38 @@
-#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,36 +41,44 @@ def add(self, no_upload=0):
del self.REQUEST.SESSION['no_upload']
return newtemplate()
- return self.referencetypes
def getISO():
- f=file('/usr/local/mpiwg/Zope/lib/python/Products/OSA_system/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
+ """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={}
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.REQUEST.SESSION['reftype']=self.reftype
+ self.bibdata={}
+ for referenceType in self.referencetypes:
+ #print referenceType
+ 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
#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
@@ -91,13 +112,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()
@@ -105,18 +137,18 @@ 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!!
+ # 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/OSAS_upload').__of__(self)
+ newtemplate=PageTemplateFile('Products/OSA_system/zpt/OSAS_upload').__of__(self)
return newtemplate()
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):
@@ -133,7 +165,7 @@ def add6(self):
for tag in self.metadata.keys():
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'):
@@ -144,7 +176,8 @@ def add6(self):
f=open(metapath,'w')
f.writelines(renderxml)
f.close()
- os.chmod(metapath,0644)
+ 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)
@@ -152,7 +185,7 @@ def add6(self):
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)
+ newtemplate2=PageTemplateFile('Products/OSA_system/zpt/OSAS_saved').__of__(self)
newtemplate2.content_type="text/html"
@@ -162,7 +195,7 @@ def add6(self):
return newtemplate2()
-from time import localtime,strftime
+
def date(self):
return strftime("%d.%m.%Y",localtime())
@@ -177,7 +210,11 @@ def addPresentation(self,path):
try:
author=archive.getText(dom.getElementsByTagName('author')[0].childNodes)
except:
- author=archive.getText(dom.getElementsByTagName('Author')[0].childNodes)
+ 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)
@@ -198,7 +235,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):
@@ -227,7 +264,11 @@ 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')
@@ -237,7 +278,7 @@ 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/addText').__of__(self)
+ newtemplate=PageTemplateFile('Products/OSA_system/zpt/addText').__of__(self)
return newtemplate()
def addText2(self):
@@ -336,9 +377,9 @@ def addTextExternal(self,path,texturl,ve
writefile.close()
#registrieren
- urllib.urlopen("http://nausikaa2.rz-berlin.mpg.de:86/cgi-bin/toc/admin/reg.cgi?path=%s"%path).readlines()
+ return urllib.urlopen("http://nausikaa2.rz-berlin.mpg.de:86/cgi-bin/toc/admin/reg.cgi?path=%s"%path).readlines()
+
- return "DONE:"+textpath+"/"+name
def TextExternalError(text):
firsts=text[0:10]
@@ -361,7 +402,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):
@@ -375,7 +416,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()
@@ -419,7 +460,7 @@ def readArchimedesXML(folder):
for item in items:
#print item.attributes['dir'].value
try:
- dict[item.attributes['dir'].value]=item.attributes['uri'].value
+ dict[item.attributes['dir'].value]=item.attributes['xml'].value
#print item.attributes['dir'].value,item.attributes['text'].value
except:
"""nothing"""
@@ -428,46 +469,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()
- 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")
@@ -499,7 +504,7 @@ def combineTextImage2(self,path):
if self.REQUEST.has_key('text'):
textfile=os.listdir(path+"/"+self.REQUEST['text'])[0]
textfoldernode=dom.createElement('text')
- textfoldernodetext=dom.createTextNode(self.REQUEST['text']+"/"+textfile)
+ textfoldernodetext=dom.createTextNode(path+"/"+self.REQUEST['text']+"/"+textfile)
textfoldernode.appendChild(textfoldernodetext)
subnode.appendChild(textfoldernode)
@@ -521,23 +526,79 @@ def combineTextImage2(self,path):
presentationnode.appendChild(presentationnodetext)
subnode.appendChild(presentationnode)
- node.appendChild(subnode)
- try:
- node=dom.getElementsByTagName('bib')[0]
- sub=dom.getElementsByTagName('lang')[0]
+ 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)
+
+ node.appendChild(subnode)
- node.removeChild(sub)
+ try:
+ node2=node.getElementsByTagName('bib')[0]
+ subs=node2.getElementsByTagName('lang')
+ for sub in subs:
+ print "X",sub
+ node2.removeChild(sub)
except:
"""nothing"""
try:
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:
- """nothing"""
+ 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().encode('utf-8'))
writefile.close()
@@ -546,7 +607,7 @@ 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 &"% re.sub('mpiwg/online/','',self.REQUEST['path']+"/"+self.REQUEST['image']))
+ 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'])