# HG changeset patch
# User dwinter
# Date 1359542841 -3600
# Node ID 1f2760ed3efe2e8d49f9ad21869593fe28bca589
# Parent bca61e893fccea8207c41dc5920c3a9c3505b341
indices geloescht
diff -r bca61e893fcc -r 1f2760ed3efe MPIWGRoot.py
--- a/MPIWGRoot.py Thu Jan 10 17:52:13 2013 +0100
+++ b/MPIWGRoot.py Wed Jan 30 11:47:21 2013 +0100
@@ -82,206 +82,9 @@
#{'label':'Store Historical Persons','action':'storeHistoricalPersons'},
)
-
- def getHarvestCachePort(self):
- return getattr(self,"harvestPort",29999)
-
- def getHarvestCacheServer(self):
- return getattr(self,"harvestServer","localhost")
-
- def getHarvestCache(self):
- logging.debug("CACHE:"+repr(self._v_harvestCache))
- if self._v_harvestCache==None:
- #storage = FileStorage.FileStorage('/tmp/'+self.getId()+'test-filestorage.fs')
- addr = self.getHarvestCacheServer(), self.getHarvestCachePort()
- storage = ClientStorage.ClientStorage(addr)
- db = DB(storage)
- self._v_harvestDV=db
- self._v_harvestDV=db
- conn = db.open()
- dbroot = conn.root()
- if not dbroot.has_key('templates'):
- from BTrees.OOBTree import OOBTree
- dbroot['templates'] = OOBTree()
-
- self._v_harvestCache = dbroot['templates']
- logging.debug("CACHE2:"+repr(self._v_harvestCache))
- return self._v_harvestCache
-
-
-
- def __del__(self):
- if self._v_harvestCache!=None:
- self._v_harvestDV.close();
- 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 XX 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
-
- wordStr=wordStr.lstrip().rstrip()
-
- 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]
-
-
- txtCache = self.en.getHarvestCache();
- txt= txtCache.get(obj.absolute_url(),None)
-
- if txt==None:
-
- logging.debug("NO CACHE for: "+obj.absolute_url())
- txt=obj.harvest_page(mode="slim")
-
-
- if not txt:
- return ret
-
- 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:
- 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 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
- 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(""" %s"""%word.upper(),ret[x])
-
- return ret
- def copyAllImagesToMargin(self):
- """tranformiere alle Bilder in die Margins"""
- projects=self.getTree()
- ret=""
- for project in projects:
- proj=project[3]
- try:
- persons=proj.copyImageToMargin();
- except:
- logging.error("Cannnot do: %s"%repr(project))
-
- def transformProjectsToId(self):
- """trnasformiere zu ID, Hilfsfunktion die die alten Templates analysiert und mit der neuen Liste
- verantwortlicher Personen versieht"""
- projects=self.getTree()
- ret=""
- for project in projects:
-
- proj=project[3]
- persons=proj.identifyNames(proj.getContent('xdata_01'))
- if not hasattr(proj,'responsibleScientistsList'):
- proj.responsibleScientistsList=[]
-
- for person in persons.items():
-
- if len(person[1]) >1: #nicht eindeutig
- ret+="nicht eindeutig --- %s: %s\n"%(proj.getId(),person[0])
-
- elif len(person[1]) ==0: #kein eintrage
- ret+="kein eintrag--- %s: %s\n"%(proj.getId(),person[0])
- proj.responsibleScientistsList.append((person[0],""))
- else:
- proj.responsibleScientistsList.append((person[0],person[1][0].getObject().getKey()))
-
- return ret
-
-
- def harvestProjects(self):
- """harvest"""
- folder="/tmp"
- try:
- os.mkdir("/tmp/harvest_MPIWG")
- except:
- pass
- founds=self.ZopeFind(self.aq_parent.projects,obj_metatypes=['MPIWGProject'],search_sub=1)
- for found in founds:
- txt=found[1].harvest_page()
-
- if txt and (txt != ""):
- name=found[0].replace("/","_")
- fh=file("/tmp/harvest_MPIWG/"+name,"w")
- fh.write(txt)
- fh.close()
-
def decode(self,str):
"""decoder"""
@@ -607,22 +410,7 @@
self.id=id
self.title=title
- def removeStopWords(self,xo):
- """remove stop words from xo"""
- if not hasattr(self,'_v_stopWords'):
- self._v_stopWords=self.stopwords_en.data.split("\n")
-
- x=str(xo)
-
- strx=x.split(" ")
-
- for tmp in strx:
-
- if tmp.lower() in self._v_stopWords:
- del strx[strx.index(tmp)]
- return " ".join(strx)
-
def urlQuote(self,str):
"""quote"""
return urllib.quote(str)
@@ -1062,16 +850,18 @@
except:
logger("MPIWG Root (reindexCatalog: members)",logging.WARNING," %s %s"%sys.exc_info()[:2])
- try:
-
- self.fulltextProjectsMembers.manage_catalogReindex(self.REQUEST,RESPONSE,self.REQUEST['URL1'])
- logger("MPIWG Root (reindexCatalog: fulltextProjectsMembers)",logging.INFO,"DONE")
- except:
- logger("MPIWG Root (reindexCatalog: fulltextProjectsMembers)",logging.WARNING," %s %s"%sys.exc_info()[:2])
-
-
-
+#
+# try:
+#
+# self.fulltextProjectsMembers.manage_catalogReindex(self.REQUEST,RESPONSE,self.REQUEST['URL1'])
+# logger("MPIWG Root (reindexCatalog: fulltextProjectsMembers)",logging.INFO,"DONE")
+# except:
+# logger("MPIWG Root (reindexCatalog: fulltextProjectsMembers)",logging.WARNING," %s %s"%sys.exc_info()[:2])
+#
+#
+#
+#
if RESPONSE:
diff -r bca61e893fcc -r 1f2760ed3efe MPIWGRoot_deleted_methods.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/MPIWGRoot_deleted_methods.py Wed Jan 30 11:47:21 2013 +0100
@@ -0,0 +1,184 @@
+ def removeStopWords(self,xo):
+ """remove stop words from xo"""
+ if not hasattr(self,'_v_stopWords'):
+ self._v_stopWords=self.stopwords_en.data.split("\n")
+
+ x=str(xo)
+
+ strx=x.split(" ")
+
+ for tmp in strx:
+
+ if tmp.lower() in self._v_stopWords:
+ del strx[strx.index(tmp)]
+
+ return " ".join(strx)
+
+
+ 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 XX 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
+
+ wordStr=wordStr.lstrip().rstrip()
+
+ 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]
+
+
+ txtCache = self.en.getHarvestCache();
+ txt= txtCache.get(obj.absolute_url(),None)
+
+ if txt==None:
+
+ logging.debug("NO CACHE for: "+obj.absolute_url())
+ txt=obj.harvest_page(mode="slim")
+
+
+ if not txt:
+ return ret
+
+ 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:
+ 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 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
+ 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(""" %s"""%word.upper(),ret[x])
+
+ return ret
+ def copyAllImagesToMargin(self):
+ """tranformiere alle Bilder in die Margins"""
+ projects=self.getTree()
+ ret=""
+ for project in projects:
+ proj=project[3]
+ try:
+ persons=proj.copyImageToMargin();
+ except:
+ logging.error("Cannnot do: %s"%repr(project))
+
+ def transformProjectsToId(self):
+ """trnasformiere zu ID, Hilfsfunktion die die alten Templates analysiert und mit der neuen Liste
+ verantwortlicher Personen versieht"""
+ projects=self.getTree()
+ ret=""
+ for project in projects:
+
+ proj=project[3]
+ persons=proj.identifyNames(proj.getContent('xdata_01'))
+ if not hasattr(proj,'responsibleScientistsList'):
+ proj.responsibleScientistsList=[]
+
+ for person in persons.items():
+
+ if len(person[1]) >1: #nicht eindeutig
+ ret+="nicht eindeutig --- %s: %s\n"%(proj.getId(),person[0])
+
+ elif len(person[1]) ==0: #kein eintrage
+ ret+="kein eintrag--- %s: %s\n"%(proj.getId(),person[0])
+ proj.responsibleScientistsList.append((person[0],""))
+ else:
+ proj.responsibleScientistsList.append((person[0],person[1][0].getObject().getKey()))
+
+ return ret
+
+
+ def harvestProjects(self):
+ """harvest"""
+ folder="/tmp"
+ try:
+ os.mkdir("/tmp/harvest_MPIWG")
+ except:
+ pass
+ founds=self.ZopeFind(self.aq_parent.projects,obj_metatypes=['MPIWGProject'],search_sub=1)
+ for found in founds:
+ txt=found[1].harvest_page()
+
+ if txt and (txt != ""):
+ name=found[0].replace("/","_")
+ fh=file("/tmp/harvest_MPIWG/"+name,"w")
+ fh.write(txt)
+ fh.close()
+
\ No newline at end of file