annotate MPIWGRoot_deleted_methods.py @ 33:01b5265264b6

more work on projects.
author casties
date Wed, 24 Apr 2013 20:48:45 +0200
parents 1f2760ed3efe
children e30a4bd074db
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
33
01b5265264b6 more work on projects.
casties
parents: 1
diff changeset
1 def removeStopWords(self,xo):
1
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
2 """remove stop words from xo"""
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
3 if not hasattr(self,'_v_stopWords'):
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
4 self._v_stopWords=self.stopwords_en.data.split("\n")
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
5
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
6 x=str(xo)
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
7
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
8 strx=x.split(" ")
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
9
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
10 for tmp in strx:
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
11
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
12 if tmp.lower() in self._v_stopWords:
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
13 del strx[strx.index(tmp)]
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
14
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
15 return " ".join(strx)
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
16
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
17
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
18 def getGetNeighbourhood(self,obj, wordStr, length=100,tagging=True):
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
19 """finde umgebung um die worte in wordStr, zurueckgegeben wird eine Array mit den Umgebungen von Fundstellen der Worte
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
20 alle Tags werden entfernt, die Fundstellen werden mit <span class="found">XX</span> getaggt, die Umgebungen werden
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
21 case insensitive gesucht
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
22 @param wordStr: string mit Worten getrennt durch Leerzeichen, Phrasen sind mit " gekennzeichnet
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
23 "eine phrase", "*" bezeichnet wildcards und wird ignoriert"
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
24 @param length: optional, default wert 100, 2*length ist die groesse der Umgebung
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
25 @param tagging: optional default wert true, kein span tag wird erzweugt falls tag=false
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
26 """
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
27
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
28 ret=[] # nimmt das Array auf, dass spaeter zurueckgegeben wird
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
29 ranges=[] #Array mit tupeln x,y wobei x die Position des Anfang und y des Endes der i-ten Umgebung angiebt
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
30
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
31 wordStr=wordStr.lstrip().rstrip()
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
32
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
33 def isInRanges(nr,length):
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
34 """test ob eine gegeben Position nr schon irgendwo in einer Umgebung ist, gibt den Index des ersten Wertes aus ranges zurueck,
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
35 -1, wenn kein Treffer
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
36
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
37 @param nr: Position die geprueft werden soll
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
38 @param length: Laenge des Wortes das geprueft werden soll
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
39 """
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
40 for x in ranges:
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
41 if (x[0]<=nr) and (nr < (x[1]-length)):
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
42 return ranges.index(x)
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
43 return -1
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
44
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
45 # deal with phrases, in Phrasen werden die Leerzeichen durch "_" ersetzt.
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
46 def rep_empty(str):
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
47 x= re.sub(" ","_",str.group(0))
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
48 return re.sub("\"","",x)
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
49
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
50 wordStr=re.sub("\".*?\"", rep_empty,wordStr)#ersetze leerzeichen in " " durch "_" und loesche "
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
51
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
52 #deal with wildcards, for our purposes it is enough to delete the wildcard
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
53 wordStr=wordStr.replace("*","")
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
54
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
55 words=wordStr.split(" ")
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
56 #if not words is ListType:
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
57 # words=[words]
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
58
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
59
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
60 txtCache = self.en.getHarvestCache();
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
61 txt= txtCache.get(obj.absolute_url(),None)
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
62
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
63 if txt==None:
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
64
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
65 logging.debug("NO CACHE for: "+obj.absolute_url())
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
66 txt=obj.harvest_page(mode="slim")
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
67
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
68
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
69 if not txt:
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
70 return ret
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
71
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
72 soup = BeautifulSoup(txt)
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
73
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
74 comments = soup.findAll(text=lambda text:isinstance(text, Comment))
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
75 [comment.extract() for comment in comments]
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
76
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
77 txt = ''.join(soup.findAll(text=True))
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
78
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
79
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
80 #txt=re.sub("<.*?>", "", txt) # loesche alle Tags
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
81 for word in words:
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
82 word=re.sub("_"," ",word) # ersetze zurueck "_" durch " "
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
83 pos=0
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
84
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
85 n=txt.lower().count(word.lower()) # wie oft tritt das Wort auf
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
86
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
87 for i in range(n):
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
88 pos=txt.lower().find(word.lower(),pos)
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
89
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
90 if pos > 0:
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
91 x=max(0,pos-length)
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
92 y=min(len(txt),pos+length)
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
93
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
94
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
95 #is word already in one of the results
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
96 nr=isInRanges(pos,len(word))
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
97 if nr >=0:# word ist in einer schon gefunden Umgebung, dann vergroessere diese
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
98 x=min(ranges[nr][0],x)
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
99 y=max(ranges[nr][1],y)
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
100
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
101 str=txt[x:y]
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
102 if x!=0: #add dots if in the middle of text
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
103 str="..."+str
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
104
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
105 if y!=len(txt): #add dots if in the middle of text
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
106 str=str+"..."
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
107
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
108
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
109
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
110 if nr >=0: # word ist in einer schon gefunden Umgebung
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
111 ranges[nr]=(x,y) # neue Position der Umgebung
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
112
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
113 ret[nr]=str # neue Umgebung
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
114 else: # andernfalls neue Umgebung hinzufuegen
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
115 ranges.append((x,y))
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
116
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
117 ret.append(str)
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
118
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
119 pos=pos+len(word)
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
120 else:
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
121 break;
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
122
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
123 # now highlight everything
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
124 if tagging:
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
125 for x in range(len(ret)):
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
126 for word in words:
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
127 repl=re.compile(word,re.IGNORECASE)
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
128 ret[x]=repl.sub(""" <span class="found">%s</span>"""%word.upper(),ret[x])
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
129
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
130 return ret
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
131 def copyAllImagesToMargin(self):
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
132 """tranformiere alle Bilder in die Margins"""
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
133 projects=self.getTree()
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
134 ret=""
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
135 for project in projects:
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
136 proj=project[3]
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
137 try:
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
138 persons=proj.copyImageToMargin();
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
139 except:
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
140 logging.error("Cannnot do: %s"%repr(project))
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
141
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
142 def transformProjectsToId(self):
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
143 """trnasformiere zu ID, Hilfsfunktion die die alten Templates analysiert und mit der neuen Liste
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
144 verantwortlicher Personen versieht"""
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
145 projects=self.getTree()
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
146 ret=""
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
147 for project in projects:
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
148
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
149 proj=project[3]
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
150 persons=proj.identifyNames(proj.getContent('xdata_01'))
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
151 if not hasattr(proj,'responsibleScientistsList'):
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
152 proj.responsibleScientistsList=[]
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
153
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
154 for person in persons.items():
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
155
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
156 if len(person[1]) >1: #nicht eindeutig
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
157 ret+="nicht eindeutig --- %s: %s\n"%(proj.getId(),person[0])
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
158
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
159 elif len(person[1]) ==0: #kein eintrage
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
160 ret+="kein eintrag--- %s: %s\n"%(proj.getId(),person[0])
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
161 proj.responsibleScientistsList.append((person[0],""))
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
162 else:
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
163 proj.responsibleScientistsList.append((person[0],person[1][0].getObject().getKey()))
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
164
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
165 return ret
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
166
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
167
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
168 def harvestProjects(self):
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
169 """harvest"""
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
170 folder="/tmp"
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
171 try:
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
172 os.mkdir("/tmp/harvest_MPIWG")
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
173 except:
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
174 pass
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
175 founds=self.ZopeFind(self.aq_parent.projects,obj_metatypes=['MPIWGProject'],search_sub=1)
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
176 for found in founds:
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
177 txt=found[1].harvest_page()
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
178
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
179 if txt and (txt != ""):
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
180 name=found[0].replace("/","_")
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
181 fh=file("/tmp/harvest_MPIWG/"+name,"w")
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
182 fh.write(txt)
1f2760ed3efe indices geloescht
dwinter
parents:
diff changeset
183 fh.close()
33
01b5265264b6 more work on projects.
casties
parents: 1
diff changeset
184
01b5265264b6 more work on projects.
casties
parents: 1
diff changeset
185
01b5265264b6 more work on projects.
casties
parents: 1
diff changeset
186
01b5265264b6 more work on projects.
casties
parents: 1
diff changeset
187 def generateNameIndex(self):
01b5265264b6 more work on projects.
casties
parents: 1
diff changeset
188 """erzeuge einen index verwendeter personen"""
01b5265264b6 more work on projects.
casties
parents: 1
diff changeset
189 import psycopg
01b5265264b6 more work on projects.
casties
parents: 1
diff changeset
190 o = psycopg.connect('dbname=authorities user=dwinter password=3333',serialize=0)
01b5265264b6 more work on projects.
casties
parents: 1
diff changeset
191 results={}
01b5265264b6 more work on projects.
casties
parents: 1
diff changeset
192 print self.fulltext.historicalNames.items()
01b5265264b6 more work on projects.
casties
parents: 1
diff changeset
193 for nameItem in self.fulltext.historicalNames.items(): #gehe durch alle namen des lexikons
01b5265264b6 more work on projects.
casties
parents: 1
diff changeset
194
01b5265264b6 more work on projects.
casties
parents: 1
diff changeset
195 c = o.cursor()
01b5265264b6 more work on projects.
casties
parents: 1
diff changeset
196 name=nameItem[0]
01b5265264b6 more work on projects.
casties
parents: 1
diff changeset
197 print "check",name
01b5265264b6 more work on projects.
casties
parents: 1
diff changeset
198 c.execute("select lastname,firstname from persons where lower(lastname) = '%s'"%quote(name))
01b5265264b6 more work on projects.
casties
parents: 1
diff changeset
199 tmpres=c.fetchall()
01b5265264b6 more work on projects.
casties
parents: 1
diff changeset
200 firstnames=[result[1] for result in tmpres] # find all firstnames
01b5265264b6 more work on projects.
casties
parents: 1
diff changeset
201 if tmpres:
01b5265264b6 more work on projects.
casties
parents: 1
diff changeset
202 lastname=tmpres[0][0]
01b5265264b6 more work on projects.
casties
parents: 1
diff changeset
203
01b5265264b6 more work on projects.
casties
parents: 1
diff changeset
204 for found in self.fulltext({'names':name}):
01b5265264b6 more work on projects.
casties
parents: 1
diff changeset
205 if found.getObject().isActual():
01b5265264b6 more work on projects.
casties
parents: 1
diff changeset
206 for nh in found.getObject().getGetNeighbourhood(name, length=50,tagging=False): #hole umgebung
01b5265264b6 more work on projects.
casties
parents: 1
diff changeset
207 #schaue nun ob der vorname hinter oder vor dem name ist
01b5265264b6 more work on projects.
casties
parents: 1
diff changeset
208 position=nh.find(lastname)
01b5265264b6 more work on projects.
casties
parents: 1
diff changeset
209 # vorher
01b5265264b6 more work on projects.
casties
parents: 1
diff changeset
210 #print "NH",nh
01b5265264b6 more work on projects.
casties
parents: 1
diff changeset
211 bevorS=nh[0:position].split()
01b5265264b6 more work on projects.
casties
parents: 1
diff changeset
212 #print "BV",bevorS
01b5265264b6 more work on projects.
casties
parents: 1
diff changeset
213 if len(bevorS)>1:
01b5265264b6 more work on projects.
casties
parents: 1
diff changeset
214 try:
01b5265264b6 more work on projects.
casties
parents: 1
diff changeset
215 bevor=[bevorS[-1],bevorS[-2]]
01b5265264b6 more work on projects.
casties
parents: 1
diff changeset
216 except:
01b5265264b6 more work on projects.
casties
parents: 1
diff changeset
217 bevor=[bevorS[0]]
01b5265264b6 more work on projects.
casties
parents: 1
diff changeset
218 else:
01b5265264b6 more work on projects.
casties
parents: 1
diff changeset
219 bevor=[]
01b5265264b6 more work on projects.
casties
parents: 1
diff changeset
220 #nachher
01b5265264b6 more work on projects.
casties
parents: 1
diff changeset
221 behindS= re.split("[,|;| ]",nh[position:])
01b5265264b6 more work on projects.
casties
parents: 1
diff changeset
222 #print "BH",behindS
01b5265264b6 more work on projects.
casties
parents: 1
diff changeset
223 if len(behindS)>2:
01b5265264b6 more work on projects.
casties
parents: 1
diff changeset
224 try:
01b5265264b6 more work on projects.
casties
parents: 1
diff changeset
225 behind=behindS[1:3]
01b5265264b6 more work on projects.
casties
parents: 1
diff changeset
226 except:
01b5265264b6 more work on projects.
casties
parents: 1
diff changeset
227 behind=[bevorS[1]]
01b5265264b6 more work on projects.
casties
parents: 1
diff changeset
228 else:
01b5265264b6 more work on projects.
casties
parents: 1
diff changeset
229 behind=[]
01b5265264b6 more work on projects.
casties
parents: 1
diff changeset
230 for firstname in firstnames:
01b5265264b6 more work on projects.
casties
parents: 1
diff changeset
231 if firstname in bevor+behind: #Namen wie mit Adelspraedikaten werden so erstmal nich gefunden
01b5265264b6 more work on projects.
casties
parents: 1
diff changeset
232 id="%s,%s"%(lastname,firstname)
01b5265264b6 more work on projects.
casties
parents: 1
diff changeset
233 if not results.has_key(id):
01b5265264b6 more work on projects.
casties
parents: 1
diff changeset
234 results[id]=[]
01b5265264b6 more work on projects.
casties
parents: 1
diff changeset
235 objId=found.getObject().getId()
01b5265264b6 more work on projects.
casties
parents: 1
diff changeset
236 if not (objId in results[id]):
01b5265264b6 more work on projects.
casties
parents: 1
diff changeset
237 print "d %s for %s"%(id,objId)
01b5265264b6 more work on projects.
casties
parents: 1
diff changeset
238 results[id].append(objId)
01b5265264b6 more work on projects.
casties
parents: 1
diff changeset
239 self.nameIndex=results
01b5265264b6 more work on projects.
casties
parents: 1
diff changeset
240 return results
01b5265264b6 more work on projects.
casties
parents: 1
diff changeset
241
01b5265264b6 more work on projects.
casties
parents: 1
diff changeset
242 def editNameIndexHTML(self):
01b5265264b6 more work on projects.
casties
parents: 1
diff changeset
243 """edit the name index"""
01b5265264b6 more work on projects.
casties
parents: 1
diff changeset
244 if not hasattr(self,'nameIndexEdited'): # falls editierter index noch nicht existiert, kopiere automatisch erstellten
01b5265264b6 more work on projects.
casties
parents: 1
diff changeset
245 self.nameIndexEdited=copy.copy(self.nameIndex)
01b5265264b6 more work on projects.
casties
parents: 1
diff changeset
246 print "huh"
01b5265264b6 more work on projects.
casties
parents: 1
diff changeset
247 #self.nameIndexEdited=copy.copy(self.nameIndex)
01b5265264b6 more work on projects.
casties
parents: 1
diff changeset
248 #print self.nameIndexEdited
01b5265264b6 more work on projects.
casties
parents: 1
diff changeset
249 pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','editHistoricalNames.zpt')).__of__(self)
01b5265264b6 more work on projects.
casties
parents: 1
diff changeset
250 return pt()
01b5265264b6 more work on projects.
casties
parents: 1
diff changeset
251
01b5265264b6 more work on projects.
casties
parents: 1
diff changeset
252 def getNamesInProject(self,projectId):
01b5265264b6 more work on projects.
casties
parents: 1
diff changeset
253 """get all names ofnameIndexEdited which are references in projec with projectId"""
01b5265264b6 more work on projects.
casties
parents: 1
diff changeset
254
01b5265264b6 more work on projects.
casties
parents: 1
diff changeset
255 ret=[]
01b5265264b6 more work on projects.
casties
parents: 1
diff changeset
256 for name in self.nameIndexEdited.keys():
01b5265264b6 more work on projects.
casties
parents: 1
diff changeset
257 if projectId in self.nameIndexEdited[name]:
01b5265264b6 more work on projects.
casties
parents: 1
diff changeset
258 ret.append(name)
01b5265264b6 more work on projects.
casties
parents: 1
diff changeset
259
01b5265264b6 more work on projects.
casties
parents: 1
diff changeset
260 return ret
01b5265264b6 more work on projects.
casties
parents: 1
diff changeset
261
01b5265264b6 more work on projects.
casties
parents: 1
diff changeset
262 def editNameIndex(self,RESPONSE=None,name=None,occurrances=None,submit=None):
01b5265264b6 more work on projects.
casties
parents: 1
diff changeset
263 """edit the index"""
01b5265264b6 more work on projects.
casties
parents: 1
diff changeset
264 nI=self.nameIndexEdited # mI introduced to make sure that changes to nameIndexEdited are know to ZODB
01b5265264b6 more work on projects.
casties
parents: 1
diff changeset
265 if submit=="delete":
01b5265264b6 more work on projects.
casties
parents: 1
diff changeset
266
01b5265264b6 more work on projects.
casties
parents: 1
diff changeset
267
01b5265264b6 more work on projects.
casties
parents: 1
diff changeset
268 dh=getattr(self,'deletedHistoricalNames',{})
01b5265264b6 more work on projects.
casties
parents: 1
diff changeset
269
01b5265264b6 more work on projects.
casties
parents: 1
diff changeset
270 if type(dh) is ListType:
01b5265264b6 more work on projects.
casties
parents: 1
diff changeset
271 dh={}
01b5265264b6 more work on projects.
casties
parents: 1
diff changeset
272 if not dh.has_key(name):
01b5265264b6 more work on projects.
casties
parents: 1
diff changeset
273 dh[name]=occurrances.split("\n")
01b5265264b6 more work on projects.
casties
parents: 1
diff changeset
274 else:
01b5265264b6 more work on projects.
casties
parents: 1
diff changeset
275 dh[name]+=occurrances.split("\n")
01b5265264b6 more work on projects.
casties
parents: 1
diff changeset
276
01b5265264b6 more work on projects.
casties
parents: 1
diff changeset
277 self.deletedHistoricalNames=dh
01b5265264b6 more work on projects.
casties
parents: 1
diff changeset
278
01b5265264b6 more work on projects.
casties
parents: 1
diff changeset
279 del self.nameIndexEdited[name]
01b5265264b6 more work on projects.
casties
parents: 1
diff changeset
280
01b5265264b6 more work on projects.
casties
parents: 1
diff changeset
281
01b5265264b6 more work on projects.
casties
parents: 1
diff changeset
282 elif (submit=="change"):
01b5265264b6 more work on projects.
casties
parents: 1
diff changeset
283
01b5265264b6 more work on projects.
casties
parents: 1
diff changeset
284 nI[name]=occurrances.split("\n")[0:]
01b5265264b6 more work on projects.
casties
parents: 1
diff changeset
285
01b5265264b6 more work on projects.
casties
parents: 1
diff changeset
286 elif (submit=="add"):
01b5265264b6 more work on projects.
casties
parents: 1
diff changeset
287 if not nI.has_key(name):
01b5265264b6 more work on projects.
casties
parents: 1
diff changeset
288 nI[name]=occurrances.split("\n")
01b5265264b6 more work on projects.
casties
parents: 1
diff changeset
289 else:
01b5265264b6 more work on projects.
casties
parents: 1
diff changeset
290 nI[name]+=occurrances.split("\n")
01b5265264b6 more work on projects.
casties
parents: 1
diff changeset
291
01b5265264b6 more work on projects.
casties
parents: 1
diff changeset
292 self.nameIndexEdited=nI
01b5265264b6 more work on projects.
casties
parents: 1
diff changeset
293
01b5265264b6 more work on projects.
casties
parents: 1
diff changeset
294
01b5265264b6 more work on projects.
casties
parents: 1
diff changeset
295 if RESPONSE is not None:
01b5265264b6 more work on projects.
casties
parents: 1
diff changeset
296 RESPONSE.redirect('editNameIndexHTML')
01b5265264b6 more work on projects.
casties
parents: 1
diff changeset
297
01b5265264b6 more work on projects.
casties
parents: 1
diff changeset
298
01b5265264b6 more work on projects.
casties
parents: 1
diff changeset
299
01b5265264b6 more work on projects.
casties
parents: 1
diff changeset
300 def restoreIndex(self):
01b5265264b6 more work on projects.
casties
parents: 1
diff changeset
301 """restore"""
01b5265264b6 more work on projects.
casties
parents: 1
diff changeset
302 self.nameIndexEdited=self.nameIndex
01b5265264b6 more work on projects.
casties
parents: 1
diff changeset
303 return "done"
01b5265264b6 more work on projects.
casties
parents: 1
diff changeset
304