--- OSAS/OSA_system/OSAS_add.py 2003/10/08 17:37:31 1.3 +++ OSAS/OSA_system/OSAS_add.py 2004/04/15 21:30:42 1.26 @@ -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,36 +42,45 @@ def add(self, no_upload=0): del self.REQUEST.SESSION['no_upload'] return newtemplate() - return self.referencetypes def getISO(): - f=file('/Users/dwinter/Documents/Projekte/OSAS/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 - return 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') + 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 +114,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 +139,21 @@ 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 - self.image_folder_name="pageimg" - newtemplate=PageTemplateFile('products/OSA_system/OSAS_upload').__of__(self) - return newtemplate() + 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() + 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): @@ -131,9 +168,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]+"\n" + if tag!="": + 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'): @@ -144,25 +182,25 @@ 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) 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) - - - 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 not (self.REQUEST.SESSION['no_upload']=="text"): + 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() + else: + """text upload""" + return 1 -from time import localtime,strftime def date(self): return strftime("%d.%m.%Y",localtime()) @@ -177,15 +215,28 @@ def addPresentation(self,path): try: author=archive.getText(dom.getElementsByTagName('author')[0].childNodes) except: - author=archive.getText(dom.getElementsByTagName('Author')[0].childNodes) - title=archive.getText(dom.getElementsByTagName('title')[0].childNodes) + 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: - 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 @@ -198,7 +249,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): @@ -223,24 +274,29 @@ def addPresentation2(self): os.mkdir(path+"/"+folder_name) except: """nothing""" - print "NAME:",file_name + #print "NAME:",file_name 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 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['path']=path - newtemplate=PageTemplateFile('products/OSA_system/addText').__of__(self) + 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'] @@ -336,13 +392,13 @@ def addTextExternal(self,path,texturl,ve writefile.close() #registrieren - print 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] - print firsts + #print firsts try: match=re.search(r".*> /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