Add workaround for Q68816332 mapping to Orphir
This commit is contained in:
		
							parent
							
								
									96e3bac55c
								
							
						
					
					
						commit
						29426e2462
					
				
							
								
								
									
										18
									
								
								lookup.py
									
									
									
									
									
								
							
							
						
						
									
										18
									
								
								lookup.py
									
									
									
									
									
								
							| 
						 | 
					@ -27,8 +27,11 @@ database.init_app(app)
 | 
				
			||||||
setup_error_mail(app)
 | 
					setup_error_mail(app)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Tags = typing.Mapping[str, str]
 | 
					Tags = typing.Mapping[str, str]
 | 
				
			||||||
 | 
					StrDict = dict[str, typing.Any]
 | 
				
			||||||
logging_enabled = True
 | 
					logging_enabled = True
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					fallback_qid_to_commons_cat = {"Q68816332": "Orphir"}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@app.errorhandler(werkzeug.exceptions.InternalServerError)
 | 
					@app.errorhandler(werkzeug.exceptions.InternalServerError)
 | 
				
			||||||
def exception_handler(e: werkzeug.exceptions.InternalServerError) -> tuple[str, int]:
 | 
					def exception_handler(e: werkzeug.exceptions.InternalServerError) -> tuple[str, int]:
 | 
				
			||||||
| 
						 | 
					@ -85,6 +88,20 @@ def do_lookup(
 | 
				
			||||||
    return wikidata.build_dict(hit, lat, lon)
 | 
					    return wikidata.build_dict(hit, lat, lon)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def add_missing_commons_cat(rows: list[StrDict]) -> None:
 | 
				
			||||||
 | 
					    """Add missing details for Commons Categories to Wikidata query results."""
 | 
				
			||||||
 | 
					    for row in rows:
 | 
				
			||||||
 | 
					        if "commonsSiteLink" in row or "commonsCat" in row:
 | 
				
			||||||
 | 
					            continue
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        qid = row["item"]["value"].rpartition("/")[2]
 | 
				
			||||||
 | 
					        if qid not in fallback_qid_to_commons_cat:
 | 
				
			||||||
 | 
					            continue
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        commons_cat = fallback_qid_to_commons_cat[qid]
 | 
				
			||||||
 | 
					        row["commonsCat"] = {"type": "literal", "value": commons_cat}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def lat_lon_to_wikidata(lat: float, lon: 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)
 | 
				
			||||||
| 
						 | 
					@ -92,6 +109,7 @@ def lat_lon_to_wikidata(lat: float, lon: float) -> dict[str, typing.Any]:
 | 
				
			||||||
    elements: typing.Any
 | 
					    elements: typing.Any
 | 
				
			||||||
    if scotland_code:
 | 
					    if scotland_code:
 | 
				
			||||||
        rows = wikidata.lookup_scottish_parish_in_wikidata(scotland_code)
 | 
					        rows = wikidata.lookup_scottish_parish_in_wikidata(scotland_code)
 | 
				
			||||||
 | 
					        add_missing_commons_cat(rows)
 | 
				
			||||||
        hit = wikidata.commons_from_rows(rows)
 | 
					        hit = wikidata.commons_from_rows(rows)
 | 
				
			||||||
        elements = []
 | 
					        elements = []
 | 
				
			||||||
        result = wikidata.build_dict(hit, lat, lon)
 | 
					        result = wikidata.build_dict(hit, lat, lon)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in a new issue