parent
							
								
									65d1fbf6fa
								
							
						
					
					
						commit
						06f2d7f804
					
				
							
								
								
									
										22
									
								
								lookup.py
									
									
									
									
									
								
							
							
						
						
									
										22
									
								
								lookup.py
									
									
									
									
									
								
							| 
						 | 
					@ -52,7 +52,7 @@ def do_lookup(
 | 
				
			||||||
    return wikidata.build_dict(hit, lat, lon)
 | 
					    return wikidata.build_dict(hit, lat, lon)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def lat_lon_to_wikidata(lat: str | float, lon: str | float) -> dict[str, typing.Any]:
 | 
					def lat_lon_to_wikidata(lat: float, lon: float) -> dict[str, typing.Any]:
 | 
				
			||||||
    """Lookup lat/lon and find most appropriate Wikidata item."""
 | 
					    """Lookup lat/lon and find most appropriate Wikidata item."""
 | 
				
			||||||
    scotland_code = scotland.get_scotland_code(lat, lon)
 | 
					    scotland_code = scotland.get_scotland_code(lat, lon)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -188,12 +188,21 @@ def index() -> str | Response:
 | 
				
			||||||
    if q and q.strip():
 | 
					    if q and q.strip():
 | 
				
			||||||
        return redirect_to_detail(q)
 | 
					        return redirect_to_detail(q)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    lat, lon = request.args.get("lat"), request.args.get("lon")
 | 
					    lat_str, lon_str = request.args.get("lat"), request.args.get("lon")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if lat is None or lon is None:
 | 
					    if lat_str is None or lon_str is None:
 | 
				
			||||||
        samples = sorted(geocode.samples, key=lambda row: row[2])
 | 
					        samples = sorted(geocode.samples, key=lambda row: row[2])
 | 
				
			||||||
        return render_template("index.html", samples=samples)
 | 
					        return render_template("index.html", samples=samples)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    lat, lon = float(lat_str), float(lon_str)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if lat < -90 or lat > 90 or lon < -180 or lon > 180:
 | 
				
			||||||
 | 
					        return jsonify(
 | 
				
			||||||
 | 
					            coords={"lat": lat, "lon": lon},
 | 
				
			||||||
 | 
					            error="lat must be between -90 and 90, "
 | 
				
			||||||
 | 
					            + "and lon must be between -180 and 180",
 | 
				
			||||||
 | 
					        )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    result = lat_lon_to_wikidata(lat, lon)["result"]
 | 
					    result = lat_lon_to_wikidata(lat, lon)["result"]
 | 
				
			||||||
    result.pop("element", None)
 | 
					    result.pop("element", None)
 | 
				
			||||||
    result.pop("geojson", None)
 | 
					    result.pop("geojson", None)
 | 
				
			||||||
| 
						 | 
					@ -243,6 +252,13 @@ def wikidata_tag() -> str:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def build_detail_page(lat: float, lon: float) -> str:
 | 
					def build_detail_page(lat: float, lon: float) -> str:
 | 
				
			||||||
    """Run lookup and build detail page."""
 | 
					    """Run lookup and build detail page."""
 | 
				
			||||||
 | 
					    if lat < -90 or lat > 90 or lon < -180 or lon > 180:
 | 
				
			||||||
 | 
					        error = (
 | 
				
			||||||
 | 
					            "latitude must be between -90 and 90, "
 | 
				
			||||||
 | 
					            + "and longitude must be between -180 and 180"
 | 
				
			||||||
 | 
					        )
 | 
				
			||||||
 | 
					        return render_template("query_error.html", lat=lat, lon=lon, error=error)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    try:
 | 
					    try:
 | 
				
			||||||
        reply = lat_lon_to_wikidata(lat, lon)
 | 
					        reply = lat_lon_to_wikidata(lat, lon)
 | 
				
			||||||
    except wikidata.QueryError as e:
 | 
					    except wikidata.QueryError as e:
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in a new issue