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) |