Skip to content

Commit 6db86aa

Browse files
committed
Make OSM georegion region finding more flexible
Given callback returns Q instead of just region_identifier
1 parent b7034dc commit 6db86aa

1 file changed

Lines changed: 7 additions & 6 deletions

File tree

froide/georegion/osm.py

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,25 +4,26 @@
44
from pathlib import Path
55

66
from django.contrib.gis.geos import GEOSGeometry
7+
from django.db.models import Q
78

89
from .models import GeoRegion
910

1011
logger = logging.getLogger(__name__)
1112

1213

13-
def update_georegion(wkb, tags, get_region_key=None):
14-
key = get_region_key(tags)
15-
if not key:
14+
def update_georegion(wkb, tags, get_region_query=None):
15+
query = get_region_query(tags)
16+
if not query:
1617
return
17-
GeoRegion.objects.filter(region_identifier=key).update(
18+
GeoRegion.objects.filter(query).update(
1819
geom_detail=GEOSGeometry(wkb, srid=4326),
1920
osm_tags=tags,
2021
)
2122

2223

2324
def import_osm_pbf(
2425
pbf_file: Path,
25-
region_key_func: Callable[[dict[str, str]], str | None],
26+
region_query_func: Callable[[dict[str, str]], Q | None],
2627
):
2728
try:
2829
import osmium
@@ -52,6 +53,6 @@ def area(self, area):
5253
return
5354
self.area_callback(wkb, dict(area.tags))
5455

55-
area_handler = partial(update_georegion, get_region_key=region_key_func)
56+
area_handler = partial(update_georegion, get_region_query=region_query_func)
5657
handler = AdminAreaHandler(area_handler)
5758
handler.apply_file(pbf_file, locations=True, idx="flex_mem")

0 commit comments

Comments
 (0)