Diff for /ECHO_content/ECHO_collection.py between versions 1.162 and 1.163

version 1.162, 2004/08/09 10:10:56 version 1.163, 2004/08/17 15:22:14
Line 48  import xml.dom.minidom Line 48  import xml.dom.minidom
 from ECHO_graphicalOverview import javaHandler,javaScriptMain  from ECHO_graphicalOverview import javaHandler,javaScriptMain
 import ECHO_helpers  import ECHO_helpers
   
   def donatus(txt2):
       import xmlrpclib
   
       server = xmlrpclib.ServerProxy("http://archimedes.fas.harvard.edu/cgi-bin/donatus-rpc")
   
       txt=txt2.encode('utf-8')
       bin=xmlrpclib.Binary(txt)
   
       
   
       ret=server.donatus.analyze(bin)
   
           
       return ret['morphData'].data
   
   
   def donatusVariant2Lemma(morphData):
       """creates hash variant -> morphdata"""
       ret={}
       dom=xml.dom.minidom.parseString(morphData)
       lemmas=dom.getElementsByTagName('lemma')
       for lemma in lemmas:
           variants=lemma.getElementsByTagName('variant')
           for variant in variants:
               atr=variant.getAttribute('form')
               if ret.has_key(atr):
                   ret[atr].append=lemma.getAttribute('form')
               else:
                   ret[atr]=[lemma.getAttribute('form')]
   
       return ret
   
 #regexp for extracting elements from xml  #regexp for extracting elements from xml
 patternTXT=r"<\s*txt.*?>(.*?)</txt>"  patternTXT=r"<\s*txt.*?>(.*?)</txt>"
 regexpTXT = re.compile(patternTXT, re.IGNORECASE + re.DOTALL)  regexpTXT = re.compile(patternTXT, re.IGNORECASE + re.DOTALL)
Line 281  class BrowserCheck: Line 313  class BrowserCheck:
                   
 def writeMetadata(url,metadict,project=None,startpage=None,xslt=None,thumbtemplate=None,topbar=None,digiLibTemplate=None,xmlfrag=None,digiliburlprefix=None):  def writeMetadata(url,metadict,project=None,startpage=None,xslt=None,thumbtemplate=None,topbar=None,digiLibTemplate=None,xmlfrag=None,digiliburlprefix=None):
     """Einlesen der Metadaten und und erstellen des geaenderten XML file"""      """Einlesen der Metadaten und und erstellen des geaenderten XML file"""
     print "url",url  
     def updateTextToolNode(tag,value):      def updateTextToolNode(tag,value):
         #print dom,tag,value          #print dom,tag,value
         metanode=dom.getElementsByTagName('texttool')[0]          metanode=dom.getElementsByTagName('texttool')[0]
Line 310  def writeMetadata(url,metadict,project=N Line 342  def writeMetadata(url,metadict,project=N
     else:      else:
         try:          try:
             geturl=""              geturl=""
             for line in urllib.urlopen(url).readlines():              for line in ECHO_helpers.urlopen(url).readlines():
                 geturl=geturl+line                  geturl=geturl+line
   
   
Line 392  def readMetadata(url): Line 424  def readMetadata(url):
     metadict={}      metadict={}
     try:      try:
         geturl=""          geturl=""
         for line in urllib.urlopen(url).readlines():          for line in ECHO_helpers.urlopen(url).readlines():
             geturl=geturl+line              geturl=geturl+line
                   
                   
Line 584  def manage_addECHO_layoutTemplate(self, Line 616  def manage_addECHO_layoutTemplate(self,
     REQUEST.RESPONSE.redirect(u+'/manage_main')      REQUEST.RESPONSE.redirect(u+'/manage_main')
     return ''      return ''
   
   class ECHO_fullText(ZopePageTemplate):
       """echo fulltext in xml"""
   
       meta_type="ECHO_fullText"
   
       def donatusVariant2Lemma(self,nr='1'):
           """analyze by donatus"""
           return donatusVariant2Lemma(donatus(self.lemmatize(nr)))
   
       def tagLex(self,nr="1"):
           """generate Links"""
           global retLex
           global toggle
   
           toggle=0
           retLex=""
   
           lemmatized=self.lemmatize(nr)[0:]
           #print "ho",repr(lemmatized)
           variants=donatusVariant2Lemma(donatus(lemmatized))
           
           def createTag(name,attrs):
                           global toggle
               
               if name=="w":
                   toggle=1
                   return ""
               else:
                   tag="<"
                   tag+=name
                   for attr in attrs.keys():
                       tag+=""" %s="%s" """%(attr,attrs[attr])
                   tag+=">"
               return tag
                   
           def createData(data):
               global toggle
               astring="""<a href="http://141.14.236.86/cgi-bin/toc/dict?step=remotetable;word=%s;lang=de" target="_blank">%s</a> """
               if toggle: # tag war ein w
                   toggle=0
                   if variants.has_key(data):
                       return astring%(variants[data][0],data)
                   else:
                       return astring%(data,data)
                   
   
   
           # 3 handler functions
           def start_element(name, attrs):
               global retLex
               print name
               retLex+=createTag(name,attrs)
           def end_element(name):
               global retLex
               if not name=="w":
                   retLex+="</%s>"%(name.encode('utf-8'))
               
               
           def char_data(data):
               global retLex
               if data:
                   try:
                       retLex+=createData(data)
                   except:
                       """no"""
                       
           p = xml.parsers.expat.ParserCreate()
   
           p.StartElementHandler = start_element
           p.EndElementHandler = end_element
           p.CharacterDataHandler = char_data
           
           p.Parse(lemmatized.encode('utf-8'),1)
           print repr(lemmatized.encode('utf-8'))
       
           return retLex
       
           
       def lemmatize(self,nr='1',lang="de"):
           """lemmatize"""
           global ret
           ret=""
           
           def createTag(name,attrs):
               tag="<"
               tag+=name
               for attr in attrs.keys():
                   tag+=""" %s="%s" """%(attr,attrs[attr])
               tag+=">"
               return tag
                   
           def insertW(str):
               splitted=str.split()
               wordlist=["<w>%s</w>"%split for split in splitted]
               return string.join(wordlist,'\n')
   
           # 3 handler functions
           def start_element(name, attrs):
               global ret
               ret+=createTag(name,attrs)
           def end_element(name):
               global ret
               ret+="</%s>"%(name.encode('utf-8'))
               
           def char_data(data):
               global ret
               ret+=insertW(data)
   
           p = xml.parsers.expat.ParserCreate()
   
           p.StartElementHandler = start_element
           p.EndElementHandler = end_element
           p.CharacterDataHandler = char_data
   
           p.Parse(self.getPage(nr), 1)
           txt="""<wtag locator="xxx">
           <section lang="%s"><s>%s</s></section>
           </wtag>"""
           ret=txt%(lang,ret)
           
           return ret
       
       def getPage(self,nr='1'):
           """get page n"""
           dom=xml.dom.minidom.parseString(self())
           pages=dom.getElementsByTagName('page')
           
           return pages[int(nr)-1].toxml('utf-8')
       
   # Product registration and Add support
   manage_addECHO_fullTextForm = PageTemplateFile(
       'zpt/AddECHO_fullText.zpt', globals())
   
   from urllib import quote
   
   def manage_addECHO_fullText(self, id, title=None, text=None,
                              REQUEST=None, submit=None):
       "Add a Page Template with optional file content."
   
       id = str(id)
       if REQUEST is None:
           self._setObject(id, ECHO_fullText(id, text))
           ob = getattr(self, id)
           if title:
               ob.pt_setTitle(title)
           return ob
       else:
           file = REQUEST.form.get('file')
           headers = getattr(file, 'headers', None)
           if headers is None or not file.filename:
               zpt = ECHO_fullText(id)
           else:
               zpt = ECHO_fullText(id, file, headers.get('content_type'))
   
           self._setObject(id, zpt)
   
           try:
               u = self.DestinationURL()
           except AttributeError:
               u = REQUEST['URL1']
   
           if submit == " Add and Edit ":
               u = "%s/%s" % (u, quote(id))
           REQUEST.RESPONSE.redirect(u+'/manage_main')
       return ''
   
 class ECHO_resource(Folder,Persistent):  class ECHO_resource(Folder,Persistent):
     """ECHO Ressource"""      """ECHO Ressource"""
     security=ClassSecurityInfo()      security=ClassSecurityInfo()
Line 688  class ECHO_resource(Folder,Persistent): Line 884  class ECHO_resource(Folder,Persistent):
   
         try:          try:
             geturl=""              geturl=""
             for line in urllib.urlopen(url).readlines():              for line in ECHO_helpers.urlopen(url).readlines():
                 geturl=geturl+line                  geturl=geturl+line
   
   
Line 718  class ECHO_resource(Folder,Persistent): Line 914  class ECHO_resource(Folder,Persistent):
         params="accessright=%s"%accessright          params="accessright=%s"%accessright
   
   
         #print urllib.urlopen(self.absolute_url()+'/setAccessRightXML'+'?'+params).read()          #print ECHO_helpers.urlopen(self.absolute_url()+'/setAccessRightXML'+'?'+params).read()
   
                   
         urllib.urlopen('http://xserve02.mpiwg-berlin.mpg.de:18880/echo_nav/storage/downloadExternalXML?index_meta_url=%s&xml_url=%s'%(self.metalink,self.absolute_url()+'/setAccessRightXML'+urllib.quote('?'+params))).read()          ECHO_helpers.urlopen('http://xserve02.mpiwg-berlin.mpg.de:18880/echo_nav/storage/downloadExternalXML?index_meta_url=%s&xml_url=%s'%(self.metalink,self.absolute_url()+'/setAccessRightXML'+urllib.quote('?'+params))).read()
   
               
         if RESPONSE is not None:          if RESPONSE is not None:
Line 734  class ECHO_resource(Folder,Persistent): Line 930  class ECHO_resource(Folder,Persistent):
   
         try:          try:
             geturl=""              geturl=""
             for line in urllib.urlopen(url).readlines():              for line in ECHO_helpers.urlopen(url).readlines():
                 geturl=geturl+line                   geturl=geturl+line 
   
   
Line 810  class ECHO_resource(Folder,Persistent): Line 1006  class ECHO_resource(Folder,Persistent):
           
         params="startpage=%s"%startpage          params="startpage=%s"%startpage
                   
         urllib.urlopen('http://xserve02.mpiwg-berlin.mpg.de:18880/echo_nav/storage/downloadExternalXML?index_meta_url=%s&xml_url=%s'%(self.metalink,self.absolute_url()+'/newMetaXML'+urllib.quote('?'+params))).read()          ECHO_helpers.urlopen('http://xserve02.mpiwg-berlin.mpg.de:18880/echo_nav/storage/downloadExternalXML?index_meta_url=%s&xml_url=%s'%(self.metalink,self.absolute_url()+'/newMetaXML'+urllib.quote('?'+params))).read()
           
                   
         path=self.metalink          path=self.metalink
Line 826  class ECHO_resource(Folder,Persistent): Line 1022  class ECHO_resource(Folder,Persistent):
         path=re.sub('/index.meta','',path)           path=re.sub('/index.meta','',path) 
   
   
         urllib.urlopen("http://nausikaa2.rz-berlin.mpg.de:86/cgi-bin/toc/admin/reg.cgi?path=%s"%path).readlines()          ECHO_helpers.urlopen("http://nausikaa2.rz-berlin.mpg.de:86/cgi-bin/toc/admin/reg.cgi?path=%s"%path).readlines()
   
         if RESPONSE is not None:          if RESPONSE is not None:
             RESPONSE.redirect('manage_main')              RESPONSE.redirect('manage_main')
Line 866  class ECHO_resource(Folder,Persistent): Line 1062  class ECHO_resource(Folder,Persistent):
         params="project=%s&xslt=%s&thumbtemplate=%s&topbar=%s&digiLibTemplate=%s&digiliburlprefix=%s"%(project,xslt,thumbtemplate,topbar,digiLibTemplate,digiliburlprefix)          params="project=%s&xslt=%s&thumbtemplate=%s&topbar=%s&digiLibTemplate=%s&digiliburlprefix=%s"%(project,xslt,thumbtemplate,topbar,digiLibTemplate,digiliburlprefix)
   
                   
         urllib.urlopen('http://echo.mpiwg-berlin.mpg.de/echo_nav/storage/downloadExternalXML?index_meta_url=%s&xml_url=%s'%(self.metalink,self.absolute_url()+'/newMetaXML'+urllib.quote('?'+params))).read()          ECHO_helpers.urlopen('http://echo.mpiwg-berlin.mpg.de/echo_nav/storage/downloadExternalXML?index_meta_url=%s&xml_url=%s'%(self.metalink,self.absolute_url()+'/newMetaXML'+urllib.quote('?'+params))).read()
   
         #print self.absolute_url()+'/newMetaXML'+urllib.quote'?'+params)          #print self.absolute_url()+'/newMetaXML'+urllib.quote'?'+params)
         # hack Pfad auf die Dokumente          # hack Pfad auf die Dokumente
Line 886  class ECHO_resource(Folder,Persistent): Line 1082  class ECHO_resource(Folder,Persistent):
         path=re.sub('http://foxridge.rz-berlin.mpg.de:8080','',path) # falls foxridge als server          path=re.sub('http://foxridge.rz-berlin.mpg.de:8080','',path) # falls foxridge als server
         path=re.sub('http://foxridge.rz-berlin.mpg.de','',path) # falls foxridge als server          path=re.sub('http://foxridge.rz-berlin.mpg.de','',path) # falls foxridge als server
         path=re.sub('http://content.mpiwg-berlin.mpg.de','',path) # falls content als server          path=re.sub('http://content.mpiwg-berlin.mpg.de','',path) # falls content als server
         return urllib.urlopen("http://nausikaa2.rz-berlin.mpg.de:86/cgi-bin/toc/admin/reg.cgi?path=%s"%path).readlines()          return ECHO_helpers.urlopen("http://nausikaa2.rz-berlin.mpg.de:86/cgi-bin/toc/admin/reg.cgi?path=%s"%path).readlines()
   
         if RESPONSE is not None:          if RESPONSE is not None:
             RESPONSE.redirect('manage_main')              RESPONSE.redirect('manage_main')
Line 921  class ECHO_resource(Folder,Persistent): Line 1117  class ECHO_resource(Folder,Persistent):
     def getFullTextXML(self,noredirect=None):      def getFullTextXML(self,noredirect=None):
         """getFullTextXML; gives the FullText as an XML Document, and <error></error> if somthing goes wrong."""          """getFullTextXML; gives the FullText as an XML Document, and <error></error> if somthing goes wrong."""
         try:          try:
             fh=urllib.urlopen(self.metalink)              fh=ECHO_helpers.urlopen(self.metalink)
             dom=xml.dom.minidom.parse(fh)              dom=xml.dom.minidom.parse(fh)
             texttools=dom.getElementsByTagName('texttool')              texttools=dom.getElementsByTagName('texttool')
             text=texttools[0].getElementsByTagName('text')              text=texttools[0].getElementsByTagName('text')
Line 944  class ECHO_resource(Folder,Persistent): Line 1140  class ECHO_resource(Folder,Persistent):
     def getImageView(self,noredirect=None):      def getImageView(self,noredirect=None):
         """getImages; give Imageviewr  and <error></error> if somthing goes wrong."""          """getImages; give Imageviewr  and <error></error> if somthing goes wrong."""
         try:          try:
             fh=urllib.urlopen(self.metalink)              fh=ECHO_helpers.urlopen(self.metalink)
             dom=xml.dom.minidom.parse(fh)              dom=xml.dom.minidom.parse(fh)
             texttools=dom.getElementsByTagName('texttool')              texttools=dom.getElementsByTagName('texttool')
             text=texttools[0].getElementsByTagName('image')              text=texttools[0].getElementsByTagName('image')
Line 1193  class ECHO_resource(Folder,Persistent): Line 1389  class ECHO_resource(Folder,Persistent):
             except:              except:
                 """nothing"""                  """nothing"""
   
         urllib.urlopen('http://xserve02.mpiwg-berlin.mpg.de:18880/echo_nav/storage/downloadExternalXML?index_meta_url=%s&xml_url=%s'%(self.metalink,self.absolute_url()+'/newMetaXML')).read()          ECHO_helpers.urlopen('http://xserve02.mpiwg-berlin.mpg.de:18880/echo_nav/storage/downloadExternalXML?index_meta_url=%s&xml_url=%s'%(self.metalink,self.absolute_url()+'/newMetaXML')).read()
   
   
         if RESPONSE is not None:          if RESPONSE is not None:
Line 1744  class ECHO_collection(Folder, Persistent Line 1940  class ECHO_collection(Folder, Persistent
         pt.content_type="text/html"          pt.content_type="text/html"
         return pt()          return pt()
           
       def changeWeights(self):
           """change form"""
           pt=PageTemplateFile('Products/ECHO_content/zpt/changeWeightForm').__of__(self)
           pt.content_type="text/html"
           return pt()
   
     def changeMetaDataLinks(self):      def changeMetaDataLinks(self):
         """change form"""          """change form"""
         pt=PageTemplateFile('Products/ECHO_content/zpt/changeMetaDataLinkForm').__of__(self)          pt=PageTemplateFile('Products/ECHO_content/zpt/changeMetaDataLinkForm').__of__(self)
Line 1779  class ECHO_collection(Folder, Persistent Line 1981  class ECHO_collection(Folder, Persistent
                 """not"""                  """not"""
         return ret          return ret
   
     def changeLabelsInCollection(self):      def changeMetaDataLinkInCollection(self):
         """change all lables of a collection"""          """change all lables of a collection"""
         ret=""          ret=""
         argv=self.REQUEST.form          argv=self.REQUEST.form
Line 1789  class ECHO_collection(Folder, Persistent Line 1991  class ECHO_collection(Folder, Persistent
                         
             try:              try:
                 ret+=resource[1].getId()+"   "+argv[resource[1].getId()]+"</br>"                  ret+=resource[1].getId()+"   "+argv[resource[1].getId()]+"</br>"
                             resource[1].label=argv[resource[1].getId()][0:]                              resource[1].metalink=argv[resource[1].getId()][0:]
               except:
                   """not"""
           return ret
   
       def changeWeightsInCollection(self):
           """change all lables of a collection"""
           ret=""
           argv=self.REQUEST.form
           
           resources=self.ZopeFind(self,obj_metatypes=['ECHO_pageTemplate','ECHO_resource','ECHO_collection','ECHO_link','ECHO_externalLink'])
           for resource in resources:
              
               try:
                   ret+=resource[1].getId()+"   "+argv[resource[1].getId()]+"</br>"
                               resource[1].weight=argv[resource[1].getId()][0:]
             except:              except:
                 """not"""                  """not"""
         return ret          return ret
Line 2245  class ECHO_collection(Folder, Persistent Line 2462  class ECHO_collection(Folder, Persistent
         {'label':'Main Config','action':'ECHO_collection_config'},          {'label':'Main Config','action':'ECHO_collection_config'},
         {'label':'Change Labels','action':'changeLabels'},          {'label':'Change Labels','action':'changeLabels'},
         {'label':'Change Titles','action':'changeTitles'},          {'label':'Change Titles','action':'changeTitles'},
       {'label':'Change Weights','action':'changeWeights'},
         {'label':'Rerender Labels and Titles','action':'ECHO_rerenderLinksMDWarning'},          {'label':'Rerender Labels and Titles','action':'ECHO_rerenderLinksMDWarning'},
         {'label':'Graphics','action':'ECHO_graphicEntry'},          {'label':'Graphics','action':'ECHO_graphicEntry'},
     {'label':'create resources from XML','action':'createRessourcesFromXMLForm'},      {'label':'create resources from XML','action':'createRessourcesFromXMLForm'},
Line 2718  class ECHO_root(Folder,Persistent,Implic Line 2936  class ECHO_root(Folder,Persistent,Implic
           
     meta_type="ECHO_root"      meta_type="ECHO_root"
   
       def changeWeightsInCollection(self):
           """change all lables of a collection"""
           ret=""
           argv=self.REQUEST.form
           
           resources=self.ZopeFind(self,obj_metatypes=['ECHO_resource','ECHO_collection','ECHO_link','ECHO_externalLink'])
           for resource in resources:
              
               try:
                   ret+=resource[1].getId()+"   "+argv[resource[1].getId()]+"</br>"
                               resource[1].weight=argv[resource[1].getId()][0:]
               except:
                   """not"""
           return ret
   
       def changeWeights(self):
           """change form"""
           pt=PageTemplateFile('Products/ECHO_content/zpt/changeWeightForm').__of__(self)
           pt.content_type="text/html"
           return pt()
       getSubCols = ECHO_helpers.getSubCols
   
     manage_options=Folder.manage_options+(      manage_options=Folder.manage_options+(
         {'label':'Main Config','action':'ECHO_copyright_configForm'},          {'label':'Main Config','action':'ECHO_copyright_configForm'},
         {'label':'Reload Metadata','action':'reloadMetaDataFromStorageWarning'},          {'label':'Reload Metadata','action':'reloadMetaDataFromStorageWarning'},
           {'label':'Change Weights','action':'changeWeights'},
         )          )
   
           
Line 2769  class ECHO_root(Folder,Persistent,Implic Line 3009  class ECHO_root(Folder,Persistent,Implic
     def showContent(self,path):      def showContent(self,path):
         """return content/html"""          """return content/html"""
                   
         return urllib.urlopen(path+"/content_html").read()          return ECHO_helpers.urlopen(path+"/content_html").read()
           
     def getImageViewers(self):      def getImageViewers(self):
         """images"""          """images"""
Line 3068  class ECHO_root(Folder,Persistent,Implic Line 3308  class ECHO_root(Folder,Persistent,Implic
   
     def xml2html(self,str,quote="yes"):      def xml2html(self,str,quote="yes"):
         """link2html fuer VLP muss hier noch raus"""          """link2html fuer VLP muss hier noch raus"""
       print str
         if str:          if str:
             if quote=="yes2":              if quote=="yes2":
                 str=re.sub("\&","&amp;",str)                  str=re.sub("\&","&amp;",str)
Line 3081  class ECHO_root(Folder,Persistent,Implic Line 3322  class ECHO_root(Folder,Persistent,Implic
                 if self.checkRef(ref):                  if self.checkRef(ref):
                     link.setAttribute("href",self.aq_parent.absolute_url()+"/vlp_coll?id="+ref)                      link.setAttribute("href",self.aq_parent.absolute_url()+"/vlp_coll?id="+ref)
   
             str= dom.toxml('utf-8')              str= dom.toxml()
         #print str          
           #print link.toxml('utf-8')
         retStr=regexpPage.search(str)          retStr=regexpPage.search(str)
   
         return retStr.group(1)          return retStr.group(1)

Removed from v.1.162  
changed lines
  Added in v.1.163


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