Diff for /MPIWGWeb/Attic/MPIWGRoot.py between versions 1.1.2.27 and 1.1.2.33

version 1.1.2.27, 2010/06/23 15:01:56 version 1.1.2.33, 2012/01/06 08:23:10
Line 29  import copy Line 29  import copy
 import updatePersonalWWW  import updatePersonalWWW
 import MPIWGStaff  import MPIWGStaff
 from MPIWGHelper import *  from MPIWGHelper import *
   from BeautifulSoup import BeautifulSoup, Comment
   
 def sortWeight(x,y):  def sortWeight(x,y):
     x1=int(getattr(x[1],'weight','0'))      x1=int(getattr(x[1],'weight','0'))
Line 67  class MPIWGRoot(ZSQLExtendFolder): Line 67  class MPIWGRoot(ZSQLExtendFolder):
     # types of objects that show up in navigation      # types of objects that show up in navigation
     nav_meta_types = ['MPIWGTemplate','MPIWGLink','MPIWGFolder']      nav_meta_types = ['MPIWGTemplate','MPIWGLink','MPIWGFolder']
   
       manage_options = Folder.manage_options+(
           {'label':'Update personal homepages','action':'updatePersonalwww_html'},
           {'label':'Reindex catalogs','action':'reindexCatalogs'},
           {'label':'Main config','action':'changeMPIWGRootForm'},
           {'label':'add e-mails','action':'showNewDBEntries'},
           #{'label':'update the institutsbibliography','action':'updateInstitutsbiliography'},
           #{'label':'Edit Historical Persons','action':'editHistoricalPersonsForm'},
           #{'label':'Store Historical Persons','action':'storeHistoricalPersons'},
           )
       
   
     def getGetNeighbourhood(self,obj, wordStr, length=100,tagging=True):      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          """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           alle Tags werden entfernt, die Fundstellen werden mit <span class="found">XX</span> getaggt, die Umgebungen werden 
Line 111  class MPIWGRoot(ZSQLExtendFolder): Line 122  class MPIWGRoot(ZSQLExtendFolder):
         txt=obj.harvest_page()          txt=obj.harvest_page()
         if not txt:          if not txt:
             return ret              return ret
         txt=re.sub("<.*?>", "", txt) # loesche alle Tags          
           soup = BeautifulSoup(txt)
           
           comments = soup.findAll(text=lambda text:isinstance(text, Comment))
           [comment.extract() for comment in comments]
           
           txt = ''.join(soup.findAll(text=True))
           
           
           #txt=re.sub("<.*?>", "", txt) # loesche alle Tags
         for word in words:          for word in words:
             word=re.sub("_"," ",word) # ersetze zurueck "_" durch " "              word=re.sub("_"," ",word) # ersetze zurueck "_" durch " "
             pos=0              pos=0
Line 133  class MPIWGRoot(ZSQLExtendFolder): Line 153  class MPIWGRoot(ZSQLExtendFolder):
                         y=max(ranges[nr][1],y)                          y=max(ranges[nr][1],y)
                               
                     str=txt[x:y]                      str=txt[x:y]
                       if x!=0: #add dots if in the middle of text
                           str="..."+str
                       
                       if y!=len(txt): #add dots if in the middle of text
                           str=str+"..."
                           
                           
                                   
                     if nr >=0: # word ist in einer schon gefunden Umgebung                      if nr >=0: # word ist in einer schon gefunden Umgebung
                         ranges[nr]=(x,y) # neue Position der Umgebung                          ranges[nr]=(x,y) # neue Position der Umgebung
Line 589  class MPIWGRoot(ZSQLExtendFolder): Line 616  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,lang=None,RESPONSE=None):      def changeMPIWGRoot(self,title,connection_id,coneServiceURL,lang=None,autocommit=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
           self.coneServiceURL=coneServiceURL
           
         if lang is not None:          if lang is not None:
             self.lang = lang              self.lang = lang
   
           self.autocommit = (autocommit == "on")
         if RESPONSE is not None:          if RESPONSE is not None:
             RESPONSE.redirect('manage_main')              RESPONSE.redirect('manage_main')
   
Line 683  class MPIWGRoot(ZSQLExtendFolder): Line 713  class MPIWGRoot(ZSQLExtendFolder):
         return projects          return projects
           
                   
     manage_options = Folder.manage_options+(  
         {'label':'Update personal homepages','action':'updatePersonalwww_html'},  
         {'label':'Reindex catalogs','action':'reindexCatalogs'},  
         {'label':'Main config','action':'changeMPIWGRootForm'},  
         {'label':'add e-mails','action':'showNewDBEntries'},  
         {'label':'update the institutsbibliography','action':'updateInstitutsbiliography'},  
         #{'label':'Edit Historical Persons','action':'editHistoricalPersonsForm'},  
         #{'label':'Store Historical Persons','action':'storeHistoricalPersons'},  
         )  
       
   
     def updatePublicationDB(self,personId=None):      def updatePublicationDB(self,personId=None):
         """updates the publication db, i.e. copy year and type into the main table"""          """updates the publication db, i.e. copy year and type into the main table"""
                   
Line 786  class MPIWGRoot(ZSQLExtendFolder): Line 805  class MPIWGRoot(ZSQLExtendFolder):
                   
         return result,msg          return result,msg
     
     def updatePersonEntry(self,data,ignoreEntries=[]):      def updatePersonEntry(self,data,ignoreEntries=None):
         """update an person entry from data. but ignore all fields in ignore Entries"""          """update an person entry from data. but ignore all fields in ignore Entries"""
           if ignoreEntries is None:
               ignoreEntries = []
                   
         ignoreEntries.append('current_work') # TODO:updatecurrent work          #ignoreEntries.append('current_work') # TODO:updatecurrent work
           logging.debug("updatePersonEntry: data=%s ignoreEntries=%s"%(repr(data),repr(ignoreEntries)))
                   
         if data['date_to']=="": # wenn date_to leer          if data['date_to']=="": # wenn date_to leer
              data['date_to']="date_none"               data['date_to']="date_none"
Line 803  class MPIWGRoot(ZSQLExtendFolder): Line 825  class MPIWGRoot(ZSQLExtendFolder):
                     
         columns=data.keys()          columns=data.keys()
         for x in ignoreEntries:          for x in ignoreEntries:
             logging.info("ign rem: %s"%x)              logging.debug("updatePersonEntry: ignoring %s"%x)
             try: #falls in ignore entries felder sind, die nicht in columns sind, fange den fehler ab              try: #falls in ignore entries felder sind, die nicht in columns sind, fange den fehler ab
              columns.remove(x)               columns.remove(x)
             except:              except:
Line 837  class MPIWGRoot(ZSQLExtendFolder): Line 859  class MPIWGRoot(ZSQLExtendFolder):
         resultSet=self.REQUEST.SESSION['personal_www']['resultSet']          resultSet=self.REQUEST.SESSION['personal_www']['resultSet']
         news=self.REQUEST.SESSION['personal_www']['news']          news=self.REQUEST.SESSION['personal_www']['news']
         conflicts=self.REQUEST.SESSION['personal_www']['conflicts']          conflicts=self.REQUEST.SESSION['personal_www']['conflicts']
           logging.debug("updatePersonalwww_doIt: args=%s\n  resultSet=%s\n  news=%s\n  conflicts=%s"%(args,resultSet,news,conflicts))
           
         ret="<html><body>"          ret="<html><body>"
         # generate the new entry          # generate the new entry
               
Line 844  class MPIWGRoot(ZSQLExtendFolder): Line 868  class MPIWGRoot(ZSQLExtendFolder):
             ret+="<h2>Hinzugef&uuml;gt</h2>"              ret+="<h2>Hinzugef&uuml;gt</h2>"
             ret+="<p>Neueintr&auml;ge erscheinen erst auf der Homepage, wenn ihnen eine e-mail Adresse zugeordnet wurde.</p>"              ret+="<p>Neueintr&auml;ge erscheinen erst auf der Homepage, wenn ihnen eine e-mail Adresse zugeordnet wurde.</p>"
             ret+="<ul>"              ret+="<ul>"
         for new in news:  
               
           for new in news:
             if args.has_key(self.urlQuote(new.encode('utf-8'))): # entry was selected              if args.has_key(self.urlQuote(new.encode('utf-8'))): # entry was selected
                 result,msg=self.generateNewPersonEntry(resultSet[new])                  result,msg=self.generateNewPersonEntry(resultSet[new])
                 if not result:                  if not result:
Line 853  class MPIWGRoot(ZSQLExtendFolder): Line 877  class MPIWGRoot(ZSQLExtendFolder):
                     ret+="<li>ERROR: %s %s"%(new.encode('utf-8'),msg)                      ret+="<li>ERROR: %s %s"%(new.encode('utf-8'),msg)
                 else:                  else:
                     ret+="<li>OK: %s"%(new.encode('utf-8'))                      ret+="<li>OK: %s"%(new.encode('utf-8'))
                       
         if news and (len(news)>0):          if news and (len(news)>0):
             ret+="<p>Neueintr&auml;ge erscheinen erst auf der Homepage, wenn ihnen eine e-mail Adresse zugeordnet wurde.</p>"              ret+="<p>Neueintr&auml;ge erscheinen erst auf der Homepage, wenn ihnen eine e-mail Adresse zugeordnet wurde.</p>"
             ret+="</ul>"                   ret+="</ul>"     
Line 871  class MPIWGRoot(ZSQLExtendFolder): Line 896  class MPIWGRoot(ZSQLExtendFolder):
                 if args[conflict.encode('utf-8')+'_'+cf[0]]=="stored": #use the stored one                  if args[conflict.encode('utf-8')+'_'+cf[0]]=="stored": #use the stored one
                     ignoreEntries.append(cf[0])  #so ignore field cf[0]                             ignoreEntries.append(cf[0])  #so ignore field cf[0]       
                     displayIgnored.append(cf)                      displayIgnored.append(cf)
                       
             if len(displayIgnored)>0:              if len(displayIgnored)>0:
                 ret+="<h3>%s</h3>"%conflict.encode('utf-8')                  ret+="<h3>%s</h3>"%conflict.encode('utf-8')
                   
                 ret+="<table border='1'>"                  ret+="<table border='1'>"
                 for iE in displayIgnored:                  for iE in displayIgnored:
                     ret+="<tr><td>%s</td><td>%s</td><td>%s</td>"%(iE[0].encode('utf-8'),iE[1].encode('utf-8'),iE[2].encode('utf-8'))                      ret+="<tr><td>%s</td><td>%s</td><td>%s</td>"%(iE[0].encode('utf-8'),iE[1].encode('utf-8'),iE[2].encode('utf-8'))
                 ret+="</tabel>"                  ret+="</table>"
                                   
             self.updatePersonEntry(resultSet[conflict],ignoreEntries=ignoreEntries)              self.updatePersonEntry(resultSet[conflict],ignoreEntries=ignoreEntries)
                     
Line 1495  class MPIWGRoot(ZSQLExtendFolder): Line 1520  class MPIWGRoot(ZSQLExtendFolder):
         return "done"          return "done"
           
   
       def sortResults(self,results):
           """search the catalog and give results back sorted by meta_type"""
           ret = {}
           logging.debug(results())
           for result in results():
               metaType = result.meta_type
               resultList= ret.get(metaType,[])
               resultList.append(result)
               ret[metaType]=resultList
           
           logging.debug(ret)
           return ret
           
                           
 def manage_addMPIWGRootForm(self):  def manage_addMPIWGRootForm(self):
     """form for adding the root"""      """form for adding the root"""

Removed from v.1.1.2.27  
changed lines
  Added in v.1.1.2.33


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