--- OSAS/OSA_system/OSAS_add.py 2004/03/21 15:31:36 1.14 +++ OSAS/OSA_system/OSAS_add.py 2005/01/20 13:38:02 1.40 @@ -1,26 +1,38 @@ -#BAUSTELLE +#Neue Version Begin 5.4.2004 """Methoden zum hinzufügen von Dokumenten ins Archiv""" from OSAS_helpers import readArchimedesXML -import archive +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 from time import localtime,strftime - -#referencetypes=['Book','Bic','Journal Article','Manuscript','jiji'] +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'] + #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: @@ -30,33 +42,36 @@ 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') + 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 + 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() @@ -100,8 +115,19 @@ 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) @@ -111,20 +137,47 @@ def add3(self): 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.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) - 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() + 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('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""" + try: + os.chmod(self.REQUEST.SESSION['path'],0775) + except: + pass + newtemplate=PageTemplateFile('Products/OSA_system/zpt/OSAS_add_metadata').__of__(self) return newtemplate() @@ -140,18 +193,19 @@ 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/zpt/index_meta').__of__(self) newtemplate.content_type="text/plain" - renderxml = newtemplate() + 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') - f.writelines(renderxml) + f.write(renderxml.encode('utf-8')) f.close() os.chmod(metapath,0664) os.popen('chmod -R 0775 %s'%self.add_metadata['archive-path']+"/"+self.add_metadata['folder_name']) @@ -161,17 +215,17 @@ 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/zpt/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() - - def date(self): @@ -190,28 +244,41 @@ 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): + while os.path.exists(path+"/%02d-presentation"%i): i+=1 self.REQUEST.SESSION['presentationname']="%02d-presentation"%i self.REQUEST.SESSION['path']=path - self.REQUEST.SESSION['xmlvorschlag']="""