Diff for /MPIWGWeb/Attic/MPIWGRoot.py between versions 1.1.2.9 and 1.1.2.18

version 1.1.2.9, 2008/09/01 15:42:58 version 1.1.2.18, 2008/09/08 08:40:05
Line 40  def sortWeight(x,y): Line 40  def sortWeight(x,y):
 class MPIWGRoot(ZSQLExtendFolder):  class MPIWGRoot(ZSQLExtendFolder):
     """Stammordner fuer den Web-Server"""      """Stammordner fuer den Web-Server"""
   
       meta_type='MPIWGRoot'
   
     fieldLabels={'WEB_title':'WEB_Title',      fieldLabels={'WEB_title':'WEB_Title',
                  'xdata_01':'Responsible Scientists',                   'xdata_01':'Responsible Scientists',
                  'xdata_02':'Department',                   'xdata_02':'Department',
Line 58  class MPIWGRoot(ZSQLExtendFolder): Line 60  class MPIWGRoot(ZSQLExtendFolder):
                  'WEB_project_description':'WEB_project_description',                   'WEB_project_description':'WEB_project_description',
                  'WEB_related_pub':'WEB_related_pub'}                   'WEB_related_pub':'WEB_related_pub'}
           
       # (is this used?)
     folders=['MPIWGProject','Folder','ECHO_Navigation']      folders=['MPIWGProject','Folder','ECHO_Navigation']
     meta_type='MPIWGRoot'      # language of this instance
       lang = 'en'
       # types of objects that show up in navigation
       nav_meta_types = ['MPIWGTemplate','MPIWGLink','MPIWGFolder']
   
       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 170  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 135  class MPIWGRoot(ZSQLExtendFolder): Line 228  class MPIWGRoot(ZSQLExtendFolder):
         else:          else:
             return array[idx]              return array[idx]
                   
       def getLang(self):
           """returns the default language"""
           return self.lang
   
     def browserCheck(self):      def browserCheck(self):
         """check the browsers request to find out the browser type"""          """check the browsers request to find out the browser type"""
Line 237  class MPIWGRoot(ZSQLExtendFolder): Line 333  class MPIWGRoot(ZSQLExtendFolder):
           
     def subNavStatic(self,obj):      def subNavStatic(self,obj):
         """subnav" von self"""          """subnav" von self"""
         def sortWeight(x,y):  
             x1=int(getattr(x[1],'weight','0'))  
             y1=int(getattr(y[1],'weight','0'))  
             return cmp(x1,y1)  
         
         subs=self.ZopeFind(obj,obj_metatypes=['MPIWGTemplate','MPIWGLink'])          subs=self.ZopeFind(obj,obj_metatypes=['MPIWGTemplate','MPIWGLink'])
         subret=[]          subret=[]
   
Line 253  class MPIWGRoot(ZSQLExtendFolder): Line 344  class MPIWGRoot(ZSQLExtendFolder):
           
     def subNav(self,obj):      def subNav(self,obj):
         """return subnav elemente"""          """return subnav elemente"""
         def sortWeight(x,y):  
             x1=int(getattr(x[1],'weight','0'))  
             y1=int(getattr(y[1],'weight','0'))  
             return cmp(x1,y1)  
         #if obj.meta_type in ['MPIWGTemplate','MPIWGLink']:          #if obj.meta_type in ['MPIWGTemplate','MPIWGLink']:
         #    id=obj.aq_parent.getId()          #    id=obj.aq_parent.getId()
         #else:          #else:
Line 275  class MPIWGRoot(ZSQLExtendFolder): Line 362  class MPIWGRoot(ZSQLExtendFolder):
               
         if hasattr(self,obj.getId()):          if hasattr(self,obj.getId()):
                           
             subs=self.ZopeFind(getattr(self,obj.getId()),obj_metatypes=['MPIWGTemplate','MPIWGLink'])              subs=self.ZopeFind(getattr(self,obj.getId()),obj_metatypes=self.nav_meta_types)
             subret=[]              subret=[]
   
             for x in subs:              for x in subs:
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 299  class MPIWGRoot(ZSQLExtendFolder): Line 390  class MPIWGRoot(ZSQLExtendFolder):
         secs = self.objectItems(['MPIWGFolder'])          secs = self.objectItems(['MPIWGFolder'])
         secs.sort(sortWeight)          secs.sort(sortWeight)
         #logging.debug("root: %s secs: %s"%(repr(self.absolute_url()), repr(secs)))          #logging.debug("root: %s secs: %s"%(repr(self.absolute_url()), repr(secs)))
         return secs          # return pure list of objects
           return [s[1] for s in secs]
   
     def getSectionStyle(self, name, style=""):      def getSectionStyle(self, name, style=""):
         """returns a string with the given style + '-sel' if the current section == name"""          """returns a string with the given style + '-sel' if the current section == name"""
Line 308  class MPIWGRoot(ZSQLExtendFolder): Line 400  class MPIWGRoot(ZSQLExtendFolder):
         else:          else:
             return style                  return style    
   
       def getFeatures(self):
           """returns a list of all Features"""
           dir = getattr(self, 'features')
           features = dir.objectItems(['MPIWGFeature'])
           features.sort(sortWeight)
           # return pure list of objects
           return [f[1] for f in features]
   
   
     def MPIWGrootURL(self):      def MPIWGrootURL(self):
         """returns the URL to the root"""          """returns the URL to the root"""
         return self.absolute_url()          return self.absolute_url()
Line 339  class MPIWGRoot(ZSQLExtendFolder): Line 440  class MPIWGRoot(ZSQLExtendFolder):
   
     def isActiveMember(self,key):      def isActiveMember(self,key):
         """tested ob Mitarbeiter key ist aktiv"""          """tested ob Mitarbeiter key ist aktiv"""
           key=utf8ify(key)
         ret=self.getat(self.ZSQLInlineSearch(_table='personal_www',          ret=self.getat(self.ZSQLInlineSearch(_table='personal_www',
                                             _op_key='eq',key=key,                                              _op_key='eq',key=key,
                                             _op_publish_the_data='eq',                                              _op_publish_the_data='eq',
Line 494  class MPIWGRoot(ZSQLExtendFolder): Line 596  class MPIWGRoot(ZSQLExtendFolder):
         pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','changeMPIWGRootForm')).__of__(self)          pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','changeMPIWGRootForm')).__of__(self)
         return pt()          return pt()
   
     def changeMPIWGRoot(self,title,disciplineList,themesList,connection_id,RESPONSE=None):      def changeMPIWGRoot(self,title,disciplineList,themesList,connection_id,lang=None,RESPONSE=None):
         """change"""          """change"""
         self.title=title          self.title=title
         self.connection_id=connection_id          self.connection_id=connection_id
         self.disciplineList=disciplineList          self.disciplineList=disciplineList
         self.themesList=themesList          self.themesList=themesList
           if lang is not None:
               self.lang = lang
   
         if RESPONSE is not None:          if RESPONSE is not None:
             RESPONSE.redirect('manage_main')              RESPONSE.redirect('manage_main')
Line 537  class MPIWGRoot(ZSQLExtendFolder): Line 641  class MPIWGRoot(ZSQLExtendFolder):
                         else:                          else:
                             ret.append(project)                              ret.append(project)
                   
         logging.debug("getContexts: childs=%s parents=%s depth=%s => %s"%(childs,parents,depth,repr(ret)))          #logging.debug("getContexts: childs=%s parents=%s depth=%s => %s"%(childs,parents,depth,repr(ret)))
         return ret          return ret
   
           
Line 798  class MPIWGRoot(ZSQLExtendFolder): Line 902  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)
Line 880  class MPIWGRoot(ZSQLExtendFolder): Line 986  class MPIWGRoot(ZSQLExtendFolder):
                    <channel>"""                     <channel>"""
                   
         for obj in self.getTree(dep, date, onlyActive, onlyArchived):          for obj in self.getTree(dep, date, onlyActive, onlyArchived):
             linkStr="""<link>http://wwwneu.mpiwg-berlin.mpg.de/en/research/projects/%s</link>"""              linkStr="""<link>http://www.mpiwg-berlin.mpg.de/en/research/projects/%s</link>"""
             rss+="""<item>"""              rss+="""<item>"""
             rss+=linkStr%obj[3].getId()              rss+=linkStr%obj[3].getId()
             rss+="""</item>"""              rss+="""</item>"""
Line 1081  class MPIWGRoot(ZSQLExtendFolder): Line 1187  class MPIWGRoot(ZSQLExtendFolder):
                   
         if key=="":          if key=="":
             return ""              return ""
           try:
               key=utf8ify(key)
         catalogged=self.MembersCatalog({'getKey':key})          catalogged=self.MembersCatalog({'getKey':key})
         if len(catalogged)==0:          if len(catalogged)==0:
             return ""              return ""
         else:          else:
             return catalogged[0].getObject().getId()              return catalogged[0].getObject().getId()
                   
           except:
               return ""
   
                           
   
Line 1094  class MPIWGRoot(ZSQLExtendFolder): Line 1204  class MPIWGRoot(ZSQLExtendFolder):
         """give tuple member /projects"""          """give tuple member /projects"""
         ret=[]          ret=[]
         members=self.getAllMembers()          members=self.getAllMembers()
                  logging.error("X %s"%repr(members))
         #return str(members)          #return str(members)
         for x in members:          for x in members:
               logging.error("X %s"%repr(x))
             projects=self.getProjectsOfMember(key=x[1],date=date)              projects=self.getProjectsOfMember(key=x[1],date=date)
             if len(projects)>0:              if len(projects)>0:
                 ret.append((x[0],projects))                  ret.append((x[0],projects))
Line 1120  class MPIWGRoot(ZSQLExtendFolder): Line 1231  class MPIWGRoot(ZSQLExtendFolder):
                   
         ret=[]            ret=[]  
         if key:               if key:     
             proj=self.ProjectCatalog({'getPersonKeyList':key})              proj=self.ProjectCatalog({'getPersonKeyList':utf8ify(key)})
         else:          else:
             return ret # key muss definiert sein              return ret # key muss definiert sein
                   
Line 1128  class MPIWGRoot(ZSQLExtendFolder): Line 1239  class MPIWGRoot(ZSQLExtendFolder):
         if proj:          if proj:
             proj2=[]              proj2=[]
             for x in proj:              for x in proj:
                   #logging.error("proj:%s"%repr(x.getPath()))
                 if (not getattr(x.getObject(),'invisible',None)) and (getattr(x.getObject(),'archiveTime','')==''):                     if (not getattr(x.getObject(),'invisible',None)) and (getattr(x.getObject(),'archiveTime','')==''):   
                       proj2.append(x)                        proj2.append(x)
   
Line 1139  class MPIWGRoot(ZSQLExtendFolder): Line 1251  class MPIWGRoot(ZSQLExtendFolder):
         proj2.sort(sortP)          proj2.sort(sortP)
   
         projectListe=[]          projectListe=[]
                   #logging.error("getprojectsofmember proj2: %s"%repr(proj2))
         for proj in proj2:             for proj in proj2:   
             obj=proj.getObject()              obj=proj.getObject()
             add=False              add=False
Line 1167  class MPIWGRoot(ZSQLExtendFolder): Line 1279  class MPIWGRoot(ZSQLExtendFolder):
             if add:              if add:
                 projectListe.append(obj)                  projectListe.append(obj)
                                   
                #logging.error("getprojectsofmember projectliste: %s"%repr(projectListe))
         return projectListe          return projectListe
             
     def givePersonList(self,name):      def givePersonList(self,name):

Removed from v.1.1.2.9  
changed lines
  Added in v.1.1.2.18


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