- sql = [select + "where "]
- if len(page_ids) > 0:
- sql += '('
- sql += " or ".join(['page_id=%s' for page_id in page_ids])
- sql += ') '
- sql += 'and date_invalid > now() and delete_date is null order by id desc limit 50'
- page_ids_str = [str(page_id) for page_id in page_ids]
- result = conn.execute("".join(sql), *page_ids_str)
+ if len(page_ids) == 0:
+ raise webob.exc.HTTPBadRequest()
+ where += ' and ('
+ where += " or ".join(['wrreport.page_id=%s' for page_id in page_ids])
+ where += ')'
+ params += map(str, page_ids)
+ elif not region_name is None:
+ # a name of a region is given
+ # (1) find out whether the region exists
+ subselect = 'select aswkb(border) as border_wkb from wrregion where name=lcase(%s)'
+ subresult = conn.execute(subselect, region_name)
+ if subresult.rowcount == 0:
+ # no region with such a name
+ raise webob.exc.HTTPNotFound()
+ assert subresult.rowcount == 1
+ row = subresult.fetchone()
+ # (2) now we have the border
+ border_wkb = row['border_wkb'] # border as WKB
+ where += ' and contains(geomfromwkb(%s), point(position_longitude, position_latitude))'
+ params += [border_wkb]
+ # the following variables are needed for the additional filtering below
+ border = ogr.CreateGeometryFromWkb(border_wkb)
+ point = ogr.Geometry(ogr.wkbPoint)