#Neue Version Begin 5.4.2004 """Methoden zum hinzufügen von Dokumenten ins Archiv""" from OSAS_helpers import readArchimedesXML try: import archive except: print "archive not imported" import os import os.path from Products.PageTemplates.PageTemplateFile import PageTemplateFile from Products.PageTemplates.PageTemplate import PageTemplate import string import urllib import zLOG import xml.dom.minidom from time import localtime,strftime from Globals import package_home from types import * 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=self.ZopeFind(self,obj_metatypes=['OSAS_MetadataMapping']) self.referencetypes=self.ZopeFind(self) newtemplate=PageTemplateFile(os.path.join(package_home(globals()),'zpt','OSAS_add_new')).__of__(self) self.REQUEST.SESSION['path']=self.REQUEST['path'] if no_upload==0: self.REQUEST.SESSION['no_upload']='yes' else: if self.REQUEST.SESSION.has_key('no_upload'): del self.REQUEST.SESSION['no_upload'] return newtemplate() def getISO(): """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').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 def add2(self): self.reftype=self.REQUEST['Reference Type'] 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() self.isokeys=tmp #listed=[ x for x in self.isolist.keys()] #print listed #sorted=listed.sort() #print sorted newtemplate=PageTemplateFile(os.path.join(package_home(globals()),'zpt','OSAS_add_bibdata')).__of__(self) return newtemplate() #return self.fields def parse_query_string(str): queries={} key="" value="" tmp="" toggle="key" str=urllib.unquote(str) for i in str: if i=="=": key=tmp toggle="value" tmp="" elif i=="&": queries[key]=tmp tmp="" toggle="key" else: if toggle=="key": if i=="+" : i="-" else: if i=="+" : i=" " tmp=tmp+i queries[key]=tmp return queries def add3(self): """Foldername""" metadata=parse_query_string(self.REQUEST['QUERY_STRING']) self.REQUEST.SESSION['metadata']=metadata 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(os.path.join(package_home(globals()),'zpt','OSAS_add_naming')).__of__(self) return newtemplate() def add4(self): self.path=re.search(r"/mpiwg(.*)",self.REQUEST.SESSION['path']).group(1) self.folder_name=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) 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(os.path.join(package_home(globals()),'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(os.path.join(package_home(globals()),'zpt','OSAS_add_metadata')).__of__(self) return newtemplate() def add6(self): metadata=parse_query_string(self.REQUEST['QUERY_STRING']) metadata['archive-path']=os.path.split(self.REQUEST.SESSION['path'])[0] #metadata['folder_name']=self.REQUEST.SESSION['folder_name'] metadata['folder_name']=os.path.split(self.REQUEST.SESSION['path'])[1] metadata['content-type']="scanned document" self.reftype=self.REQUEST.SESSION['reftype'] self.REQUEST.SESSION['add_metadata']=metadata self.add_metadata=metadata self.metadata=self.REQUEST.SESSION['metadata'] self.metadataprint="" for tag in self.metadata.keys(): if tag!="": self.metadataprint=self.metadataprint+"<"+tag+">"+self.metadata[tag]+""+tag+">\n" newtemplate=PageTemplateFile(os.path.join(package_home(globals()),'zpt','index_meta')).__of__(self) newtemplate.content_type="text/plain" 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') try: f.write(renderxml.encode('utf-8')) except: f.write(unicode(renderxml,'latin-1').encode('utf-8')) #f.write(renderxml) f.close() 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) if (self.REQUEST.SESSION.has_key('no_upload')) and (self.REQUEST.SESSION['no_upload']=="text"): """text upload""" return 1 else: newtemplate2=PageTemplateFile(os.path.join(package_home(globals()),'zpt','OSAS_saved')).__of__(self) newtemplate2.content_type="text/html" self.REQUEST.response.setHeader('Content-Type','text/html') return newtemplate2() def date(self): return strftime("%d.%m.%Y",localtime()) def addPresentation(self,path): """add presentation to the path""" dom=xml.dom.minidom.parse(path+"/index.meta") try: author=archive.getText(dom.getElementsByTagName('author')[0].childNodes) except: 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: try: date=archive.getText(dom.getElementsByTagName('date')[0].childNodes) except: date="" i=1 while os.path.exists(path+"/%02d-presentation"%i): i+=1 self.REQUEST.SESSION['presentationname']="%02d-presentation"%i self.REQUEST.SESSION['path']=path tmpTxt="""