Diff for /MPIWGWeb/Attic/MPIWGRoot.py between versions 1.1.2.10 and 1.1.2.11

version 1.1.2.10, 2008/09/02 12:00:06 version 1.1.2.11, 2008/09/03 11:13:44
Line 61  class MPIWGRoot(ZSQLExtendFolder): Line 61  class MPIWGRoot(ZSQLExtendFolder):
     folders=['MPIWGProject','Folder','ECHO_Navigation']      folders=['MPIWGProject','Folder','ECHO_Navigation']
     meta_type='MPIWGRoot'      meta_type='MPIWGRoot'
   
       def getGetNeighbourhood(self,obj, wordStr, length=100,tagging=True):
           """finde umgebung um die worte in wordStr, zurueckgegeben wird eine Array mit den Umgebungen von Fundstellen der Worte
           alle Tags werden entfernt, die Fundstellen werden mit <span class="found">XX</span> getaggt, die Umgebungen werden 
           case insensitive gesucht
           @param wordStr: string mit Worten getrennt durch Leerzeichen, Phrasen sind mit " gekennzeichnet
                           "eine phrase", "*"  bezeichnet wildcards und wird ignoriert"
           @param length: optional, default wert 100, 2*length ist die groesse der Umgebung
           @param tagging: optional default wert true, kein span tag wird erzweugt falls tag=false
           """
           
           ret=[] # nimmt das Array auf, dass spaeter zurueckgegeben wird
           ranges=[] #Array mit tupeln x,y wobei x die Position des Anfang und y des Endes der i-ten Umgebung angiebt
           
           def isInRanges(nr,length):
               """test ob eine gegeben Position nr schon irgendwo in einer Umgebung ist, gibt den Index des ersten Wertes aus ranges zurueck, 
               -1, wenn kein Treffer
               
               @param nr: Position die geprueft werden soll
               @param length: Laenge des Wortes das geprueft werden soll
               """
               for x in ranges:
                   if (x[0]<=nr) and (nr < (x[1]-length)):
                       return ranges.index(x)
               return -1
                   
           # deal with phrases, in Phrasen werden die Leerzeichen durch "_" ersetzt.
           def rep_empty(str):
               x= re.sub(" ","_",str.group(0))
               return re.sub("\"","",x)
               
           wordStr=re.sub("\".*?\"", rep_empty,wordStr)#ersetze leerzeichen in " " durch "_" und loesche "
           
           #deal with wildcards, for our purposes it is enough to delete the wildcard 
           wordStr=wordStr.replace("*","")
           
           words=wordStr.split(" ")
           #if not words is ListType:
           #   words=[words]
               
           txt=obj.harvest_page()
           if not txt:
               return ret
           txt=re.sub("<.*?>", "", txt) # loesche alle Tags
           for word in words:
               word=re.sub("_"," ",word) # ersetze zurueck "_" durch " "
               pos=0
               
               n=txt.lower().count(word.lower()) # wie oft tritt das Wort auf
   
               for i in range(n):
                   pos=txt.lower().find(word.lower(),pos)
   
                   if pos > 0:
                       x=max(0,pos-length)
                       y=min(len(txt),pos+length)
                     
                       
                       #is word already in one of the results
                       nr=isInRanges(pos,len(word))
                       if nr >=0:# word ist in einer schon gefunden Umgebung, dann vergroessere diese
                           x=min(ranges[nr][0],x)
                           y=max(ranges[nr][1],y)
                 
                       str=txt[x:y]
                   
                       if nr >=0: # word ist in einer schon gefunden Umgebung
                           ranges[nr]=(x,y) # neue Position der Umgebung
   
                           ret[nr]=str # neue Umgebung
                       else: # andernfalls neue Umgebung hinzufuegen
                           ranges.append((x,y))
   
                           ret.append(str)
                       
                       pos=pos+len(word)
                   else:
                       break;
                   
           # now highlight everything        
           if tagging:
               for x in range(len(ret)):
                   for word in words:
                       repl=re.compile(word,re.IGNORECASE)
                       ret[x]=repl.sub(""" <span class="found">%s</span>"""%word.upper(),ret[x])
   
           return ret
     def copyAllImagesToMargin(self):      def copyAllImagesToMargin(self):
         """tranformiere alle Bilder in die Margins"""          """tranformiere alle Bilder in die Margins"""
         projects=self.getTree()          projects=self.getTree()
Line 78  class MPIWGRoot(ZSQLExtendFolder): Line 164  class MPIWGRoot(ZSQLExtendFolder):
         projects=self.getTree()          projects=self.getTree()
         ret=""          ret=""
         for project in projects:          for project in projects:
               
             proj=project[3]              proj=project[3]
             persons=proj.identifyNames(proj.getContent('xdata_01'))              persons=proj.identifyNames(proj.getContent('xdata_01'))
             if not hasattr(proj,'responsibleScientistsList'):              if not hasattr(proj,'responsibleScientistsList'):
Line 286  class MPIWGRoot(ZSQLExtendFolder): Line 373  class MPIWGRoot(ZSQLExtendFolder):
         else:          else:
             return None              return None
   
       def isType(self,object,meta_type):
           """teste ob ein object vom meta_type ist."""
           return (object.meta_type==meta_type)
       
     def isActive(self,name):      def isActive(self,name):
         """teste ob subnavigation aktiv"""          """teste ob subnavigation aktiv"""
         for part in self.REQUEST['URL'].split("/"):          for part in self.REQUEST['URL'].split("/"):
Line 799  class MPIWGRoot(ZSQLExtendFolder): Line 890  class MPIWGRoot(ZSQLExtendFolder):
         return "<html><body>DONE</body></html>"          return "<html><body>DONE</body></html>"
   
   
       
   
     def updatePersonalwww_html(self):      def updatePersonalwww_html(self):
         """update form for the homepages web form"""          """update form for the homepages web form"""
         pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','updatePersonalwww.zpt')).__of__(self)          pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','updatePersonalwww.zpt')).__of__(self)

Removed from v.1.1.2.10  
changed lines
  Added in v.1.1.2.11


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