|
4 | 4 | from pathlib import Path |
5 | 5 |
|
6 | 6 | from django.contrib.gis.geos import GEOSGeometry |
| 7 | +from django.db.models import Q |
7 | 8 |
|
8 | 9 | from .models import GeoRegion |
9 | 10 |
|
10 | 11 | logger = logging.getLogger(__name__) |
11 | 12 |
|
12 | 13 |
|
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: |
16 | 17 | return |
17 | | - GeoRegion.objects.filter(region_identifier=key).update( |
| 18 | + GeoRegion.objects.filter(query).update( |
18 | 19 | geom_detail=GEOSGeometry(wkb, srid=4326), |
19 | 20 | osm_tags=tags, |
20 | 21 | ) |
21 | 22 |
|
22 | 23 |
|
23 | 24 | def import_osm_pbf( |
24 | 25 | pbf_file: Path, |
25 | | - region_key_func: Callable[[dict[str, str]], str | None], |
| 26 | + region_query_func: Callable[[dict[str, str]], Q | None], |
26 | 27 | ): |
27 | 28 | try: |
28 | 29 | import osmium |
@@ -52,6 +53,6 @@ def area(self, area): |
52 | 53 | return |
53 | 54 | self.area_callback(wkb, dict(area.tags)) |
54 | 55 |
|
55 | | - area_handler = partial(update_georegion, get_region_key=region_key_func) |
| 56 | + area_handler = partial(update_georegion, get_region_query=region_query_func) |
56 | 57 | handler = AdminAreaHandler(area_handler) |
57 | 58 | handler.apply_file(pbf_file, locations=True, idx="flex_mem") |
0 commit comments