Diff for /OSAS/OSA_system/OSAS_add.py between versions 1.2 and 1.17

version 1.2, 2003/10/05 18:16:19 version 1.17, 2004/03/25 09:59:19
Line 2 Line 2
   
   
 """Methoden zum hinzufügen von Dokumenten ins Archiv"""  """Methoden zum hinzufügen von Dokumenten ins Archiv"""
   from OSAS_helpers import readArchimedesXML 
   try:
 import archive  import archive
   except:
       print "archive not imported"
       
 import os  import os
 from Products.PageTemplates.PageTemplateFile import PageTemplateFile  from Products.PageTemplates.PageTemplateFile import PageTemplateFile
 from Products.PageTemplates.PageTemplate import PageTemplate  from Products.PageTemplates.PageTemplate import PageTemplate
 import string  import string
 import urllib  import urllib
 import xml.dom.minidom  import xml.dom.minidom
   from time import localtime,strftime
   
 #referencetypes=['Book','Bic','Journal Article','Manuscript','jiji']  #referencetypes=['Book','Bic','Journal Article','Manuscript','jiji']
   
Line 19  def add(self, no_upload=0): Line 25  def add(self, no_upload=0):
                   
     self.referencetypes=['Book','Journal Article','Manuscript']      self.referencetypes=['Book','Journal Article','Manuscript']
   
     newtemplate=PageTemplateFile('products/OSA_system/OSAS_add_new').__of__(self)      newtemplate=PageTemplateFile('Products/OSA_system/zpt/OSAS_add_new').__of__(self)
         self.REQUEST.SESSION['path']=self.REQUEST['path']          self.REQUEST.SESSION['path']=self.REQUEST['path']
     if no_upload==0:      if no_upload==0:
         self.REQUEST.SESSION['no_upload']='yes'          self.REQUEST.SESSION['no_upload']='yes'
Line 33  def add(self, no_upload=0): Line 39  def add(self, no_upload=0):
   
   
 def getISO():  def getISO():
         f=file('/Users/dwinter/Documents/Projekte/OSAS/OSA_system/iso639-1.inc','r').readlines()      """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()
     ret={}      ret={}
     for lineraw in f:      for lineraw in f:
         line=lineraw.encode('ascii','replace')          line=lineraw.encode('ascii','replace')
         value=string.split(line,'\t')[0].encode('ascii','replace')          value=string.split(line,'\t')[0].encode('ascii','replace')
         key=string.split(line,'\t')[1].encode('ascii','replace')          key=string.split(line,'\t')[1].encode('ascii','replace')
           
         ret[key]=value          ret[key]=value
       except:
           ret={}
         return ret          return ret
   
 def add2(self):  def add2(self):
Line 52  def add2(self): Line 62  def add2(self):
   
     self.fields=self.bibdata[self.reftype]      self.fields=self.bibdata[self.reftype]
     self.isolist=getISO()      self.isolist=getISO()
       tmp=getISO().keys()
       tmp.sort()
       self.isokeys=tmp
         #listed=[ x for x in self.isolist.keys()]          #listed=[ x for x in self.isolist.keys()]
     #print listed      #print listed
         #sorted=listed.sort()          #sorted=listed.sort()
     #print sorted      #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 newtemplate()
     #return self.fields      #return self.fields
   
Line 92  def add3(self): Line 105  def add3(self):
     metadata=parse_query_string(self.REQUEST['QUERY_STRING'])      metadata=parse_query_string(self.REQUEST['QUERY_STRING'])
     self.REQUEST.SESSION['metadata']=metadata      self.REQUEST.SESSION['metadata']=metadata
     vorschlag_naming=metadata['author'][:5]+"_"+metadata['title'][:5]+"_"+metadata['year']      vorschlag_naming=metadata['author'][:5]+"_"+metadata['title'][:5]+"_"+metadata['year']
     self.vorschlag_naming=vorschlag_naming.decode('ascii','ignore')      self.vorschlag_naming=unicode(vorschlag_naming,'ascii','ignore')
     if self.REQUEST.SESSION.has_key('no_upload'):      if self.REQUEST.SESSION.has_key('no_upload'):
         self.REQUEST.SESSION['folder_name']=self.REQUEST.SESSION['path']          self.REQUEST.SESSION['folder_name']=self.REQUEST.SESSION['path']
         return add5(self)          return add5(self)
     else:      else:
         newtemplate=PageTemplateFile('products/OSA_system/OSAS_add_naming').__of__(self)          newtemplate=PageTemplateFile('Products/OSA_system/zpt/OSAS_add_naming').__of__(self)
         return newtemplate()          return newtemplate()
           
   
Line 111  def add4(self): Line 124  def add4(self):
   
     self.REQUEST.SESSION['folder_name']=self.folder_name      self.REQUEST.SESSION['folder_name']=self.folder_name
     self.image_folder_name="pageimg"      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()      return newtemplate()
           
 def add5(self):  def add5(self):
     """ADD INDEX.META"""      """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()      return newtemplate()
   
 def add6(self):  def add6(self):
Line 133  def add6(self): Line 146  def add6(self):
     for tag in self.metadata.keys():      for tag in self.metadata.keys():
         self.metadataprint=self.metadataprint+"<"+tag+">"+self.metadata[tag]+"</"+tag+">\n"          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"      newtemplate.content_type="text/plain"
     renderxml = newtemplate()      renderxml = newtemplate()
     if self.REQUEST.SESSION.has_key('no_upload'):      if self.REQUEST.SESSION.has_key('no_upload'):
Line 144  def add6(self): Line 157  def add6(self):
     f=open(metapath,'w')      f=open(metapath,'w')
     f.writelines(renderxml)      f.writelines(renderxml)
     f.close()      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'):      if self.REQUEST.SESSION.has_key('no_upload'):
                   
         #newtemplate2=PageTemplateFile('/usr/local/mpiwg/Zope/Extensions/done',"text/html").__of__(self)          #newtemplate2=PageTemplateFile('/usr/local/mpiwg/Zope/Extensions/done',"text/html").__of__(self)
Line 152  def add6(self): Line 166  def add6(self):
     else:      else:
                 #print self.add_metadata['archive-path']                  #print self.add_metadata['archive-path']
         self.viewpath=re.search(r"/mpiwg/online/(.*)",self.add_metadata['archive-path']).group(1)           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"          newtemplate2.content_type="text/html"
Line 162  def add6(self): Line 176  def add6(self):
         return newtemplate2()          return newtemplate2()
   
   
 from time import localtime,strftime  
   
 def date(self):  def date(self):
     return strftime("%d.%m.%Y",localtime())       return strftime("%d.%m.%Y",localtime()) 
Line 173  def addPresentation(self,path): Line 187  def addPresentation(self,path):
           
     dom=xml.dom.minidom.parse(path+"/index.meta")      dom=xml.dom.minidom.parse(path+"/index.meta")
   
       
     try:      try:
         author=archive.getText(dom.getElementsByTagName('author')[0].childNodes)          author=archive.getText(dom.getElementsByTagName('author')[0].childNodes)
     except:      except:
           try:
         author=archive.getText(dom.getElementsByTagName('Author')[0].childNodes)          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)      title=archive.getText(dom.getElementsByTagName('title')[0].childNodes)
     try:      try:
         date=archive.getText(dom.getElementsByTagName('year')[0].childNodes)          date=archive.getText(dom.getElementsByTagName('year')[0].childNodes)
Line 197  def addPresentation(self,path): Line 216  def addPresentation(self,path):
     <display>yes</display>      <display>yes</display>
 </info>"""%(author,title,date)  </info>"""%(author,title,date)
           
     newtemplate=PageTemplateFile('products/OSA_system/addPresentation').__of__(self)      newtemplate=PageTemplateFile('Products/OSA_system/zpt/addPresentation').__of__(self)
     return newtemplate()      return newtemplate()
   
 def addPresentation2(self):  def addPresentation2(self):
Line 222  def addPresentation2(self): Line 241  def addPresentation2(self):
         os.mkdir(path+"/"+folder_name)          os.mkdir(path+"/"+folder_name)
     except:      except:
         """nothing"""          """nothing"""
     print "NAME:",file_name      #print "NAME:",file_name
     f=open(path+"/"+folder_name+"/"+file_name,"w")      f=open(path+"/"+folder_name+"/"+file_name,"w")
     f.write(xmlinfo)      f.write(xmlinfo)
     f.close()      f.close()
Line 236  def addText(self,path): Line 255  def addText(self,path):
     """add fulltext to the path"""      """add fulltext to the path"""
     self.REQUEST.SESSION['existing_names']=['pageimg'] # to be done generate list of existing text files      self.REQUEST.SESSION['existing_names']=['pageimg'] # to be done generate list of existing text files
     self.REQUEST.SESSION['path']=path      self.REQUEST.SESSION['path']=path
     newtemplate=PageTemplateFile('products/OSA_system/addText').__of__(self)      newtemplate=PageTemplateFile('Products/OSA_system/zpt/addText').__of__(self)
     return newtemplate()      return newtemplate()
   
 def addText2(self):  def addText2(self):
Line 335  def addTextExternal(self,path,texturl,ve Line 354  def addTextExternal(self,path,texturl,ve
     writefile.close()      writefile.close()
           
     #registrieren      #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):  def TextExternalError(text):
     firsts=text[0:10]      firsts=text[0:10]
     print firsts      #print firsts
     try:      try:
         match=re.search(r".*<?xml.*",firsts)          match=re.search(r".*<?xml.*",firsts)
     except:      except:
Line 360  def addImages(self,path): Line 379  def addImages(self,path):
     """Imagesfolder to the path"""      """Imagesfolder to the path"""
     self.REQUEST.SESSION['existing_names']=['pageimg'] # to be done generate list of existing pageimages files      self.REQUEST.SESSION['existing_names']=['pageimg'] # to be done generate list of existing pageimages files
     self.REQUEST.SESSION['path']=path      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()      return newtemplate()
   
 def addImages2(self):  def addImages2(self):
Line 374  def addImages2(self): Line 393  def addImages2(self):
     self.content_type='images'      self.content_type='images'
     addDirsToIndexMeta(self.REQUEST.SESSION['path'],self.image_folder_name,self.content_description,self.content_type)      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)      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()      return newtemplate()
           
   
Line 407  def addDirsToIndexMeta(path,folder_name, Line 426  def addDirsToIndexMeta(path,folder_name,
     writefile.write(dom.toxml().encode('utf-8'))      writefile.write(dom.toxml().encode('utf-8'))
     writefile.close()      writefile.close()
   
 def combineTextImage(self,path):  def readArchimedesXML(folder):
     """gibt input formular zur erstellung des texttools meta tag aus"""      """gib URL aus """
     files = os.listdir(path)      XML=urllib.urlopen("http://archimedes.mpiwg-berlin.mpg.de/cgi-bin/toc/toc.cgi?step=xmlcorpusmanifest").read()
           #print XML
     texts=[]      dom=xml.dom.minidom.parseString(XML)
     imagefolders=[]      items=dom.getElementsByTagName('item')
     presentationfolders=[]      dict={}
       
     for filename in files:  
           
         if archive.isdigilib2(path+"/"+filename):  
             imagefolders.append(filename)  
               
         if archive.isFullText(path,filename):  
             texts.append(filename)  
         if archive.isPresentation(path,filename):  
             presentationfolders.append(filename)  
           
     dom=xml.dom.minidom.parse(path+"/index.meta")      for item in items:
           #print item.attributes['dir'].value
     try:      try:
         filelanguage=archive.getText(dom.getElementsByTagName('lang')[0].childNodes)              dict[item.attributes['dir'].value]=item.attributes['xml'].value
               #print item.attributes['dir'].value,item.attributes['text'].value
     except:      except:
         filelanguage=""              """nothing"""
     self.REQUEST.SESSION['isolist']=getISO()          
     self.REQUEST.SESSION['path']=path      if dict.has_key(folder):
     self.REQUEST.SESSION['texts']=texts          return dict[folder]
     self.REQUEST.SESSION['imagefolders']=imagefolders      else:
     self.REQUEST.SESSION['presentationfolders']=presentationfolders          return ""
     self.REQUEST.SESSION['filelanguage']=filelanguage      
     newtemplate=PageTemplateFile('products/OSA_system/ImageandText').__of__(self)  
     return newtemplate()  
           
   
   
Line 472  def combineTextImage2(self,path): Line 481  def combineTextImage2(self,path):
     if self.REQUEST.has_key('text'):                  if self.REQUEST.has_key('text'):            
         textfile=os.listdir(path+"/"+self.REQUEST['text'])[0]          textfile=os.listdir(path+"/"+self.REQUEST['text'])[0]
         textfoldernode=dom.createElement('text')          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)
   
       if self.REQUEST.has_key('external'):#USE CVS instead of local text
           textfoldernode=dom.createElement('text')
           textfoldernodetext=dom.createTextNode(self.REQUEST.SESSION['externxml'])
         textfoldernode.appendChild(textfoldernodetext)          textfoldernode.appendChild(textfoldernodetext)
         subnode.appendChild(textfoldernode)          subnode.appendChild(textfoldernode)
   
Line 488  def combineTextImage2(self,path): Line 503  def combineTextImage2(self,path):
         presentationnode.appendChild(presentationnodetext)          presentationnode.appendChild(presentationnodetext)
         subnode.appendChild(presentationnode)          subnode.appendChild(presentationnode)
           
   
       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.appendChild(subnode)
   
     # node=dom.getElementsByTagName('lang')[0] #getNode      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:
           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=file(path+"/index.meta","w")
     writefile.write(dom.toxml().encode('utf-8'))      writefile.write(dom.toxml().encode('utf-8'))
Line 500  def combineTextImage2(self,path): Line 584  def combineTextImage2(self,path):
   
     urllib.urlopen("http://nausikaa2.rz-berlin.mpg.de:86/cgi-bin/toc/admin/reg.cgi?path=%s"%path).readlines()      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)      #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'])      
       #return self.REQUEST.RESPONSE.redirect(self.REQUEST['URL2']+'?path='+self.REQUEST['path'])
           

Removed from v.1.2  
changed lines
  Added in v.1.17


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>