--- OSAS/OSA_system/OSAS_add.py 2004/01/29 10:19:38 1.10 +++ OSAS/OSA_system/OSAS_add.py 2004/04/06 15:12:48 1.19 @@ -1,25 +1,31 @@ -#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 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 +34,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') @@ -49,10 +54,11 @@ def getISO(): 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.fields=self.bibdata[self.reftype] self.isolist=getISO() @@ -64,7 +70,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 +104,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 +129,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): @@ -140,7 +157,7 @@ def add6(self): for tag in self.metadata.keys(): self.metadataprint=self.metadataprint+"<"+tag+">"+self.metadata[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'): @@ -160,7 +177,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" @@ -170,7 +187,7 @@ def add6(self): return newtemplate2() -from time import localtime,strftime + def date(self): return strftime("%d.%m.%Y",localtime()) @@ -210,7 +227,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,7 +256,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') @@ -249,7 +270,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): @@ -373,7 +394,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 +408,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 +461,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,6 +526,35 @@ 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') + 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) try: