version 1.47.2.57, 2006/08/15 13:27:43
|
version 1.47.2.60, 2006/09/14 18:28:27
|
Line 33 from Ft.Xml.XPath import Evaluate
|
Line 33 from Ft.Xml.XPath import Evaluate
|
from Ft.Xml.XPath.Context import Context |
from Ft.Xml.XPath.Context import Context |
from Ft.Xml.Domlette import NonvalidatingReader,PrettyPrint, Print |
from Ft.Xml.Domlette import NonvalidatingReader,PrettyPrint, Print |
from Ft.Xml import EMPTY_NAMESPACE |
from Ft.Xml import EMPTY_NAMESPACE |
|
import psycopg |
|
|
definedFields=['WEB_title','xdata_01','xdata_02','xdata_03','xdata_04','xdata_05','xdata_06','xdata_07','xdata_08','xdata_09','xdata_10','xdata_11','xdata_12','xdata_13','WEB_project_header','WEB_project_description','WEB_related_pub'] |
definedFields=['WEB_title','xdata_01','xdata_02','xdata_03','xdata_04','xdata_05','xdata_06','xdata_07','xdata_08','xdata_09','xdata_10','xdata_11','xdata_12','xdata_13','WEB_project_header','WEB_project_description','WEB_related_pub'] |
|
|
Line 776 class MPIWGRoot(ZSQLExtendFolder):
|
Line 777 class MPIWGRoot(ZSQLExtendFolder):
|
if sort=="int": |
if sort=="int": |
ret.sort(sortI) |
ret.sort(sortI) |
elif sort=="stopWords": |
elif sort=="stopWords": |
print "sortStop" |
|
ret.sort(sortStopWords(self)) |
ret.sort(sortStopWords(self)) |
|
|
else: |
else: |
Line 1076 class MPIWGRoot(ZSQLExtendFolder):
|
Line 1077 class MPIWGRoot(ZSQLExtendFolder):
|
return entry |
return entry |
|
|
|
|
def getTree(self,date=None,onlyActive=None): |
def getTree(self,dep=None,date=None,onlyActive=None): |
"""generate Tree from project list""" |
"""generate Tree from project list""" |
|
|
returnList=[] |
returnList=[] |
Line 1094 class MPIWGRoot(ZSQLExtendFolder):
|
Line 1095 class MPIWGRoot(ZSQLExtendFolder):
|
if idNr[0]=="x": # kompatibilitŠt mit alter Konvention, x vor der Nummer macht project inactive |
if idNr[0]=="x": # kompatibilitŠt mit alter Konvention, x vor der Nummer macht project inactive |
project[0].setActiveFlag(False) |
project[0].setActiveFlag(False) |
|
|
|
if (not dep) or (idNr[0]==dep): #falls dep gesetzt ist nur dieses hinzufźgen. |
if onlyActive and project[0].isActiveProject(): #nur active projekte |
if onlyActive and project[0].isActiveProject(): #nur active projekte |
returnList.append((depth,nr,title,project[0])) |
returnList.append((depth,nr,title,project[0])) |
elif not onlyActive: |
elif not onlyActive: |
returnList.append((depth,nr,title,project[0])) |
returnList.append((depth,nr,title,project[0])) |
return returnList |
return returnList |
|
|
def formatElementsAsList(self,elements): |
def formatElementsAsList(self,elements,onlyOneDept=False): |
"""formatiere tree als liste""" |
"""formatiere tree als liste""" |
|
|
actualDepth=0 |
actualDepth=0 |
Line 1146 class MPIWGRoot(ZSQLExtendFolder):
|
Line 1148 class MPIWGRoot(ZSQLExtendFolder):
|
if actualDepth==1: |
if actualDepth==1: |
departmentName={'1':'Department I','2':'Department II','3':'Department III', '4':'Ind. Research Group','5':'Ind. Research Group','6':'Ind. Research Group','7':'Research Network'} |
departmentName={'1':'Department I','2':'Department II','3':'Department III', '4':'Ind. Research Group','5':'Ind. Research Group','6':'Ind. Research Group','7':'Research Network'} |
department=element[3].getContent('xdata_05') |
department=element[3].getContent('xdata_05') |
|
if not onlyOneDept: |
ret+="""<a href="#top"><img src="../grafik/totop.gif" vspace="10" border="0"></a><br><a name="dept%s"></a>%s: """%(department,departmentName[department]) |
ret+="""<a href="#top"><img src="../grafik/totop.gif" vspace="10" border="0"></a><br><a name="dept%s"></a>%s: """%(department,departmentName[department]) |
|
|
if self.REQUEST.has_key('date'): |
if self.REQUEST.has_key('date'): |
Line 1445 class MPIWGRoot(ZSQLExtendFolder):
|
Line 1448 class MPIWGRoot(ZSQLExtendFolder):
|
return (fieldname in checkFields) |
return (fieldname in checkFields) |
|
|
|
|
|
def generateNameIndex(self): |
|
"""erzeuge einen index verwendeter personen""" |
|
o = psycopg.connect('dbname=authorities user=dwinter password=3333',serialize=0) |
|
results={} |
|
print self.fulltext.historicalNames.items() |
|
for nameItem in self.fulltext.historicalNames.items(): #gehe durch alle namen des lexikons |
|
|
|
c = o.cursor() |
|
name=nameItem[0] |
|
print "check",name |
|
c.execute("select lastname,firstname from persons where lower(lastname) = '%s'"%quote(name)) |
|
tmpres=c.fetchall() |
|
firstnames=[result[1] for result in tmpres] # find all firstnames |
|
if tmpres: |
|
lastname=tmpres[0][0] |
|
|
|
for found in self.fulltext({'names':name}): |
|
if found.getObject().isActual(): |
|
for nh in found.getObject().getGetNeighbourhood(name, length=50,tagging=False): #hole umgebung |
|
#schaue nun ob der vorname hinter oder vor dem name ist |
|
position=nh.find(lastname) |
|
# vorher |
|
#print "NH",nh |
|
bevorS=nh[0:position].split() |
|
#print "BV",bevorS |
|
if len(bevorS)>1: |
|
try: |
|
bevor=[bevorS[-1],bevorS[-2]] |
|
except: |
|
bevor=[bevorS[0]] |
|
else: |
|
bevor=[] |
|
#nachher |
|
behindS= re.split("[,|;| ]",nh[position:]) |
|
#print "BH",behindS |
|
if len(behindS)>2: |
|
try: |
|
behind=behindS[1:3] |
|
except: |
|
behind=[bevorS[1]] |
|
else: |
|
behind=[] |
|
for firstname in firstnames: |
|
if firstname in bevor+behind: #Namen wie mit Adelspraedikaten werden so erstmal nich gefunden |
|
id="%s,%s"%(lastname,firstname) |
|
if not results.has_key(id): |
|
results[id]=[] |
|
objId=found.getObject().getId() |
|
if not (objId in results[id]): |
|
print "added %s for %s"%(id,objId) |
|
results[id].append(objId) |
|
self.nameIndex=results |
|
return results |
|
|
def manage_addMPIWGRootForm(self): |
def manage_addMPIWGRootForm(self): |
"""form for adding the root""" |
"""form for adding the root""" |
pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','addMPIWGRootForm.zpt')).__of__(self) |
pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','addMPIWGRootForm.zpt')).__of__(self) |
Line 1969 class MPIWGProject(CatalogAware,Folder):
|
Line 2026 class MPIWGProject(CatalogAware,Folder):
|
pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','no_project')).__of__(self) |
pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','no_project')).__of__(self) |
return pt() |
return pt() |
|
|
def getGetNeighbourhood(self,wordStr, length=100): |
def getGetNeighbourhood(self,wordStr, length=100,tagging=True): |
"""finde umgebung um die worte in wordStr, zurźckgegeben wird eine Array mit den Umgebungen von Fundstellen der Worte |
"""finde umgebung um die worte in wordStr, zurźckgegeben 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 |
case insensitive gesucht |
case insensitive gesucht |
@param wordStr: string mit Worten getrennt durch Leerzeichen, Phrasen sind mit " gekennzeichnet |
@param wordStr: string mit Worten getrennt durch Leerzeichen, Phrasen sind mit " gekennzeichnet |
"eine phrase", "*" bezeichnet wildcards und wird ignoriert" |
"eine phrase", "*" bezeichnet wildcards und wird ignoriert" |
@param length: optional, default wert 100, 2*length ist die grš§e der Umgebung |
@param length: optional, default wert 100, 2*length ist die grš§e der Umgebung |
|
@param tagging: optional default wert true, kein span tag wird erzweugt falls tag=false |
""" |
""" |
|
|
ret=[] # nimmt das Array auf, dass spŠter zurźckgegeben wird |
ret=[] # nimmt das Array auf, dass spŠter zurźckgegeben wird |
Line 2008 class MPIWGProject(CatalogAware,Folder):
|
Line 2066 class MPIWGProject(CatalogAware,Folder):
|
# words=[words] |
# words=[words] |
|
|
txt=self.harvest_page() |
txt=self.harvest_page() |
|
if not txt: |
|
return ret |
txt=re.sub("<.*?>", "", txt) # loesche alle Tags |
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 " " |
Line 2046 class MPIWGProject(CatalogAware,Folder):
|
Line 2105 class MPIWGProject(CatalogAware,Folder):
|
break; |
break; |
|
|
# now highlight everything |
# now highlight everything |
|
if tagging: |
for x in range(len(ret)): |
for x in range(len(ret)): |
for word in words: |
for word in words: |
repl=re.compile(word,re.IGNORECASE) |
repl=re.compile(word,re.IGNORECASE) |