annotate eventsRestService.py @ 5:2715bff4628d JS-viewer

Files for JS-viewer (GeoTemCo)
author Sebastian Kruse <skruse@mpiwg-berlin.mpg.de>
date Tue, 22 Jan 2013 15:07:06 +0100
parents 6d286ce1a64f
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
dwinter
parents:
diff changeset
1 import web
dwinter
parents:
diff changeset
2 import eventsDB2kml
dwinter
parents:
diff changeset
3 import harvestDataFromEvents
dwinter
parents:
diff changeset
4 import urllib
1
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
5 import urlparse
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
6
0
dwinter
parents:
diff changeset
7 urls = (
dwinter
parents:
diff changeset
8 '/xpath/(.*)', 'xpath',
1
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
9 '/xpathSearch', 'xpathSearch',
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
10 '/sqlSearch', 'sqlSearch',
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
11 '/sql', 'sql',
0
dwinter
parents:
diff changeset
12 '/species', 'species',
dwinter
parents:
diff changeset
13 '/applicants', 'applicants',
1
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
14 '/locations','locations',
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
15 '/restricted', 'restricted'
0
dwinter
parents:
diff changeset
16 )
dwinter
parents:
diff changeset
17 app = web.application(urls, globals())
dwinter
parents:
diff changeset
18
3
f198c86dd1f6 umstellung fuer dariah browser
dwinter
parents: 1
diff changeset
19 #E4D_URL="http://localhost/mmpa/"
f198c86dd1f6 umstellung fuer dariah browser
dwinter
parents: 1
diff changeset
20 E4D_URL="http://localhost/~dwinter/mmpa/events2kml/mmpa/"
1
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
21 BASE_URL="http://localhost/m/"
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
22
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
23 APPLICANT_FILE_NAME="http://localhost/outApplicants.xml"
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
24 RESEARCH_FILE_NAME="http://localhost/outResearch.xml"
0
dwinter
parents:
diff changeset
25 class locations:
dwinter
parents:
diff changeset
26
dwinter
parents:
diff changeset
27 def GET(self):
dwinter
parents:
diff changeset
28
dwinter
parents:
diff changeset
29 ret=""
dwinter
parents:
diff changeset
30
1
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
31 url1=urllib.quote_plus(APPLICANT_FILE_NAME)
0
dwinter
parents:
diff changeset
32 ret+="""
dwinter
parents:
diff changeset
33
4
6d286ce1a64f inline refresh
dwinter
parents: 3
diff changeset
34 <a href="javascript:callKML('%s','applicants')">applicants</a><br/>
6d286ce1a64f inline refresh
dwinter
parents: 3
diff changeset
35
6d286ce1a64f inline refresh
dwinter
parents: 3
diff changeset
36 """%(url1)
6d286ce1a64f inline refresh
dwinter
parents: 3
diff changeset
37
0
dwinter
parents:
diff changeset
38
dwinter
parents:
diff changeset
39
1
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
40 url2=urllib.quote_plus(RESEARCH_FILE_NAME)
0
dwinter
parents:
diff changeset
41 ret+="""
dwinter
parents:
diff changeset
42
4
6d286ce1a64f inline refresh
dwinter
parents: 3
diff changeset
43 <a href="javascript:callKML('%s','research')">research</a><br/>
6d286ce1a64f inline refresh
dwinter
parents: 3
diff changeset
44 """%(url2)
6d286ce1a64f inline refresh
dwinter
parents: 3
diff changeset
45
0
dwinter
parents:
diff changeset
46
dwinter
parents:
diff changeset
47 ret+= """
4
6d286ce1a64f inline refresh
dwinter
parents: 3
diff changeset
48 <a href="javascript:callKMLs('%s','%s')">both</a><br/>
6d286ce1a64f inline refresh
dwinter
parents: 3
diff changeset
49 """%(url1,url2)
6d286ce1a64f inline refresh
dwinter
parents: 3
diff changeset
50
0
dwinter
parents:
diff changeset
51
dwinter
parents:
diff changeset
52 return ret
dwinter
parents:
diff changeset
53
1
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
54 class restricted:
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
55 def GET(self):
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
56 x=web.input()
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
57 pathes=x.get("path")
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
58 print pathes
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
59 select=x.get("select")
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
60 newRestriction=x.get("newRestriction")
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
61
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
62 if select is None:
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
63 select="data"
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
64
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
65
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
66
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
67 #path kann meherer abfragen enthalten durch | getrennt
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
68
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
69 splittedPath = pathes.split("|")
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
70 print splittedPath
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
71 queriesArray=[]
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
72 for xlinkPath in splittedPath:
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
73 url = urllib.unquote_plus(xlinkPath);
0
dwinter
parents:
diff changeset
74
dwinter
parents:
diff changeset
75
1
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
76 qs=urlparse.urlparse(url).query
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
77
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
78 queries=urlparse.parse_qsl(qs)
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
79 q=""
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
80 for query in queries:
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
81 if query[0]=='q':
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
82 q=query[1]
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
83
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
84
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
85
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
86
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
87
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
88 url= urlparse.urlparse(url).path
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
89
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
90 pathSplitted=url.split("xpath/")
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
91 if len(pathSplitted)>1:
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
92 path=pathSplitted[1]
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
93 queriesArray.append((path,q))
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
94 print queriesArray
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
95
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
96
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
97
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
98 db = eventsDB2kml.DBQuery()
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
99
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
100 if newRestriction is None: # keine weiteren Einschaenkungen dann erzeugen das kml file
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
101 res= "<events>"+ db.searchXPaths(queriesArray)+"</events>"
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
102
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
103
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
104
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
105 hv=harvestDataFromEvents.EventKMLTransformer()
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
106
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
107
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
108 #x,cnt=hv.readString(res, ".//research_location/place_information", 0)
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
109 x,cnt=hv.readString(res, ".//place_information", 0)
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
110
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
111
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
112
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
113 s = hv.toKML(x)
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
114
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
115 return s
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
116
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
117
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
118 #sonst suche nach restriction suche muss eine liste von werten ergeben die sich mit der REstriction versteht, dh. restriction =wert wird dann in die Links eingebaut
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
119 # e.g. man such nach name d.h
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
120 # select=%20distinct%20cast%28xpath%28%27//applicant/name/text%28%29%27,%20data%29%20as%20text[]%29%20AS%20name
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
121 # dann muss die Restriction darauf passen i.a. wird die Restriction dem xpath im Suchstring entsprechen,
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
122 # newRestriction=http%3A%2F%2Flocalhost%2Fm%2Fxpath%2F%2F%2Fapplicant%2Fnam%2Ftext%28%29%
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
123
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
124 newRestriction=urllib.unquote_plus(newRestriction)
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
125
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
126 vals = db.searchXPaths(queriesArray,select,True)
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
127
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
128
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
129 ret=""
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
130
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
131
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
132 #berechen den neuer link = alter path ergaenzt um neue restriction
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
133 for val in vals:
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
134 val=val[0] # result ist immer ein tuple
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
135 # mehr als ein Treffer pro eintrag
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
136 for v in val:
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
137 newQuery=""
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
138 splittedPath.append(newRestriction+"?q="+v)
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
139 splittedPathQuoted=[urllib.quote_plus(x) for x in splittedPath]
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
140
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
141 pathNew="|".join(splittedPathQuoted)
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
142 urlNew=urllib.quote_plus("""%srestricted?path=%s"""%(BASE_URL,pathNew))
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
143 ret+="""<a href="%s?kml1=%s&source1=1">%s</a><br/>"""%(E4D_URL,urlNew,v)
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
144 return ret
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
145
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
146 class sqlSearch:
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
147 def GET(self):
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
148 x=web.input()
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
149 sql=x.get("sql")
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
150 p=x.get("xpathPlace")
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
151 output=x.get("output")
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
152
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
153
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
154
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
155 url="%ssql?q=%s&p=%s"%(BASE_URL,urllib.quote_plus(sql),p)
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
156
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
157 if output=="sql":
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
158 raise web.seeother(url)
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
159
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
160 url=urllib.quote_plus(url)
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
161
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
162
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
163
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
164 url="""%s?kml1=%s&source1=1"""%(E4D_URL,url)
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
165 raise web.seeother(url)
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
166
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
167
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
168 class xpathSearch:
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
169 def GET(self):
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
170 x=web.input()
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
171 path=x.get("path")
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
172 value=x.get("value")
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
173
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
174 url="%sxpath/%s?q=%s"%(BASE_URL,path,value)
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
175
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
176 url=urllib.quote_plus(url)
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
177
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
178
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
179
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
180 url="""%s?kml1=%s&source1=1"""%(E4D_URL,url)
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
181 raise web.seeother(url)
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
182
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
183 class sql:
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
184 def GET(self):
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
185 x = web.input()
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
186 q= x.get("q")
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
187 p= x.get("p")
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
188 db = eventsDB2kml.DBQuery()
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
189 res= "<events>"+db.sql(q)+"</events>"
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
190
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
191
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
192
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
193 hv=harvestDataFromEvents.EventKMLTransformer()
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
194
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
195
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
196 #x,cnt=hv.readString(res, ".//research_location/place_information", 0)
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
197 x,cnt=hv.readString(res, p, 0)
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
198
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
199
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
200
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
201 s = hv.toKML(x)
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
202
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
203 return s
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
204
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
205
0
dwinter
parents:
diff changeset
206 class xpath:
dwinter
parents:
diff changeset
207
dwinter
parents:
diff changeset
208 def GET(self, path):
dwinter
parents:
diff changeset
209
dwinter
parents:
diff changeset
210 if not path:
dwinter
parents:
diff changeset
211 return ""
dwinter
parents:
diff changeset
212
dwinter
parents:
diff changeset
213 x = web.input()
dwinter
parents:
diff changeset
214 q= x.get("q")
dwinter
parents:
diff changeset
215
dwinter
parents:
diff changeset
216 db = eventsDB2kml.DBQuery()
dwinter
parents:
diff changeset
217 res= "<events>"+db.searchXPath(path, q)+"</events>"
dwinter
parents:
diff changeset
218
dwinter
parents:
diff changeset
219
dwinter
parents:
diff changeset
220
dwinter
parents:
diff changeset
221 hv=harvestDataFromEvents.EventKMLTransformer()
dwinter
parents:
diff changeset
222
dwinter
parents:
diff changeset
223
dwinter
parents:
diff changeset
224 #x,cnt=hv.readString(res, ".//research_location/place_information", 0)
dwinter
parents:
diff changeset
225 x,cnt=hv.readString(res, ".//place_information", 0)
dwinter
parents:
diff changeset
226
dwinter
parents:
diff changeset
227
dwinter
parents:
diff changeset
228
dwinter
parents:
diff changeset
229 s = hv.toKML(x)
dwinter
parents:
diff changeset
230
dwinter
parents:
diff changeset
231 return s
dwinter
parents:
diff changeset
232
dwinter
parents:
diff changeset
233 class applicants:
dwinter
parents:
diff changeset
234
dwinter
parents:
diff changeset
235 def GET(self):
dwinter
parents:
diff changeset
236 db = eventsDB2kml.DBQuery()
1
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
237
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
238
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
239 x = web.input()
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
240 where= x.get("where")
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
241
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
242 whereClause=""
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
243
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
244 #Beispiel:
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
245 #select distinct
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
246 #
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
247 #cast (xpath('//name/text()',data) as text[]) AS name
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
248 #
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
249 #from locations
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
250 # where
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
251 # 'Astrophytum asterius' = ANY (cast (xpath('//species/text()', data) as text[])) ;
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
252
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
253 if where!="" and where is not None:
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
254 whereClause="where %s"%where
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
255
0
dwinter
parents:
diff changeset
256 q="""
dwinter
parents:
diff changeset
257 select
dwinter
parents:
diff changeset
258 cast(xpath('//applicant/name/text()', data) as text[]) AS name
dwinter
parents:
diff changeset
259 from locations
1
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
260 %s
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
261 """%whereClause
0
dwinter
parents:
diff changeset
262
dwinter
parents:
diff changeset
263 res=db.query(q)
dwinter
parents:
diff changeset
264 #hole alle species
dwinter
parents:
diff changeset
265 spec=set()
dwinter
parents:
diff changeset
266
dwinter
parents:
diff changeset
267 for r in res:
dwinter
parents:
diff changeset
268
dwinter
parents:
diff changeset
269 l=r[0]
dwinter
parents:
diff changeset
270 for x in l:
dwinter
parents:
diff changeset
271 spec.add(x)
dwinter
parents:
diff changeset
272
dwinter
parents:
diff changeset
273 ret=""
dwinter
parents:
diff changeset
274 spList=[x for x in spec]
dwinter
parents:
diff changeset
275
dwinter
parents:
diff changeset
276 spList.sort()
dwinter
parents:
diff changeset
277 for x in spList:
1
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
278
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
279 ret+="""<a href="%sxpath///applicant/name/text()?q=%s">%s</a>"""%(BASE_URL,x,x)
0
dwinter
parents:
diff changeset
280
dwinter
parents:
diff changeset
281 url=urllib.quote_plus("%sxpath///applicant/name/text()?q=%s"%(BASE_URL,x))
dwinter
parents:
diff changeset
282 ret+="""
dwinter
parents:
diff changeset
283
4
6d286ce1a64f inline refresh
dwinter
parents: 3
diff changeset
284 <a href="javascript:callKML('%s','%s')">e4D</a><br/>
6d286ce1a64f inline refresh
dwinter
parents: 3
diff changeset
285 """%(url,x)
6d286ce1a64f inline refresh
dwinter
parents: 3
diff changeset
286
0
dwinter
parents:
diff changeset
287
dwinter
parents:
diff changeset
288 return ret
dwinter
parents:
diff changeset
289 class species:
dwinter
parents:
diff changeset
290
dwinter
parents:
diff changeset
291 def GET(self):
dwinter
parents:
diff changeset
292 db = eventsDB2kml.DBQuery()
1
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
293
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
294 x = web.input()
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
295 where= x.get("where")
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
296
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
297 whereClause=""
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
298
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
299 # Beispiel:
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
300 #select
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
301 #
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
302 #cast (xpath('//species/text()',data) as text[]) AS name
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
303 #
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
304 #from locations
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
305 # where
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
306 # 'Anna George' = ANY (cast (xpath('//name/text()', data) as text[])) ;
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
307 #
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
308 if where!="" and where is not None:
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
309 whereClause="where %s"%where
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
310
0
dwinter
parents:
diff changeset
311 q="""
1
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
312 select distinct
0
dwinter
parents:
diff changeset
313 cast(xpath('//species/text()', data) as text[]) AS name
dwinter
parents:
diff changeset
314 from locations
1
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
315 %s
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
316 """%whereClause
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
317
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
318
0
dwinter
parents:
diff changeset
319 res=db.query(q)
dwinter
parents:
diff changeset
320 #hole alle species
dwinter
parents:
diff changeset
321 spec=set()
dwinter
parents:
diff changeset
322
dwinter
parents:
diff changeset
323 for r in res:
dwinter
parents:
diff changeset
324
dwinter
parents:
diff changeset
325 l=r[0]
dwinter
parents:
diff changeset
326 for x in l:
dwinter
parents:
diff changeset
327 spec.add(x)
dwinter
parents:
diff changeset
328
dwinter
parents:
diff changeset
329 ret=""
dwinter
parents:
diff changeset
330 spList=[x for x in spec]
dwinter
parents:
diff changeset
331
dwinter
parents:
diff changeset
332 spList.sort()
dwinter
parents:
diff changeset
333 for x in spList:
1
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
334
283badd62593 new version for embedded e4D
dwinter
parents: 0
diff changeset
335 ret+="""<a href="%sxpath///species/text()?q=%s">%s</a>"""%(BASE_URL,x,x)
0
dwinter
parents:
diff changeset
336
dwinter
parents:
diff changeset
337 url=urllib.quote_plus("%sxpath///species/text()?q=%s"%(BASE_URL,x))
dwinter
parents:
diff changeset
338 ret+="""
dwinter
parents:
diff changeset
339
4
6d286ce1a64f inline refresh
dwinter
parents: 3
diff changeset
340 <a href="javascript:callKML('%s','%s')">e4D</a><br/>
6d286ce1a64f inline refresh
dwinter
parents: 3
diff changeset
341 """%(url,x)
0
dwinter
parents:
diff changeset
342
dwinter
parents:
diff changeset
343 return ret
dwinter
parents:
diff changeset
344
dwinter
parents:
diff changeset
345 if __name__ == "__main__":
dwinter
parents:
diff changeset
346 app.run()