mirror of
https://github.com/umap-project/umap.git
synced 2025-04-29 20:02:36 +02:00
fix: import GPX desc as description
This commit is contained in:
parent
5a33709cc9
commit
0847dc1ba6
5 changed files with 64 additions and 26 deletions
|
@ -38,7 +38,16 @@ export const EXPORT_FORMATS = {
|
||||||
export class Formatter {
|
export class Formatter {
|
||||||
async fromGPX(str) {
|
async fromGPX(str) {
|
||||||
const togeojson = await import('../../vendors/togeojson/togeojson.es.js')
|
const togeojson = await import('../../vendors/togeojson/togeojson.es.js')
|
||||||
return togeojson.gpx(this.toDom(str))
|
const data = togeojson.gpx(this.toDom(str))
|
||||||
|
for (const feature of data.features || []) {
|
||||||
|
feature.properties.description = feature.properties.desc
|
||||||
|
for (const key in feature.properties) {
|
||||||
|
if (key.startsWith('_') || typeof feature.properties[key] === 'object') {
|
||||||
|
delete feature.properties[key]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return data
|
||||||
}
|
}
|
||||||
|
|
||||||
async fromKML(str) {
|
async fromKML(str) {
|
||||||
|
|
12
umap/tests/integration/helpers.py
Normal file
12
umap/tests/integration/helpers.py
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
import json
|
||||||
|
import re
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
|
from umap.models import DataLayer
|
||||||
|
|
||||||
|
|
||||||
|
def save_and_get_json(page):
|
||||||
|
with page.expect_response(re.compile(r".*/datalayer/create/.*")):
|
||||||
|
page.get_by_role("button", name="Save").click()
|
||||||
|
datalayer = DataLayer.objects.last()
|
||||||
|
return json.loads(Path(datalayer.geojson.path).read_text())
|
|
@ -1,22 +1,11 @@
|
||||||
import json
|
|
||||||
import re
|
|
||||||
from pathlib import Path
|
|
||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
from playwright.sync_api import expect
|
from playwright.sync_api import expect
|
||||||
|
|
||||||
from umap.models import DataLayer
|
from .helpers import save_and_get_json
|
||||||
|
|
||||||
pytestmark = pytest.mark.django_db
|
pytestmark = pytest.mark.django_db
|
||||||
|
|
||||||
|
|
||||||
def save_and_get_json(page):
|
|
||||||
with page.expect_response(re.compile(r".*/datalayer/create/.*")):
|
|
||||||
page.get_by_role("button", name="Save").click()
|
|
||||||
datalayer = DataLayer.objects.last()
|
|
||||||
return json.loads(Path(datalayer.geojson.path).read_text())
|
|
||||||
|
|
||||||
|
|
||||||
def test_draw_polygon(page, live_server, tilelayer):
|
def test_draw_polygon(page, live_server, tilelayer):
|
||||||
page.goto(f"{live_server.url}/en/map/new/")
|
page.goto(f"{live_server.url}/en/map/new/")
|
||||||
|
|
||||||
|
|
|
@ -1,22 +1,11 @@
|
||||||
import json
|
|
||||||
import re
|
|
||||||
from pathlib import Path
|
|
||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
from playwright.sync_api import expect
|
from playwright.sync_api import expect
|
||||||
|
|
||||||
from umap.models import DataLayer
|
from .helpers import save_and_get_json
|
||||||
|
|
||||||
pytestmark = pytest.mark.django_db
|
pytestmark = pytest.mark.django_db
|
||||||
|
|
||||||
|
|
||||||
def save_and_get_json(page):
|
|
||||||
with page.expect_response(re.compile(r".*/datalayer/create/.*")):
|
|
||||||
page.get_by_role("button", name="Save").click()
|
|
||||||
datalayer = DataLayer.objects.last()
|
|
||||||
return json.loads(Path(datalayer.geojson.path).read_text())
|
|
||||||
|
|
||||||
|
|
||||||
def test_draw_polyline(page, live_server, tilelayer):
|
def test_draw_polyline(page, live_server, tilelayer):
|
||||||
page.goto(f"{live_server.url}/en/map/new/")
|
page.goto(f"{live_server.url}/en/map/new/")
|
||||||
|
|
||||||
|
|
|
@ -9,6 +9,8 @@ from playwright.sync_api import expect
|
||||||
|
|
||||||
from umap.models import DataLayer
|
from umap.models import DataLayer
|
||||||
|
|
||||||
|
from .helpers import save_and_get_json
|
||||||
|
|
||||||
pytestmark = pytest.mark.django_db
|
pytestmark = pytest.mark.django_db
|
||||||
|
|
||||||
|
|
||||||
|
@ -142,7 +144,8 @@ def test_import_kml_from_textarea(tilelayer, live_server, page):
|
||||||
expect(paths).to_have_count(2)
|
expect(paths).to_have_count(2)
|
||||||
|
|
||||||
|
|
||||||
def test_import_gpx_from_textarea(tilelayer, live_server, page):
|
def test_import_gpx_from_textarea(tilelayer, live_server, page, settings):
|
||||||
|
settings.UMAP_ALLOW_ANONYMOUS = True
|
||||||
page.goto(f"{live_server.url}/map/new/")
|
page.goto(f"{live_server.url}/map/new/")
|
||||||
page.get_by_title("Open browser").click()
|
page.get_by_title("Open browser").click()
|
||||||
layers = page.locator(".umap-browser .datalayer")
|
layers = page.locator(".umap-browser .datalayer")
|
||||||
|
@ -163,6 +166,42 @@ def test_import_gpx_from_textarea(tilelayer, live_server, page):
|
||||||
expect(layers).to_have_count(1)
|
expect(layers).to_have_count(1)
|
||||||
expect(markers).to_have_count(1)
|
expect(markers).to_have_count(1)
|
||||||
expect(paths).to_have_count(1)
|
expect(paths).to_have_count(1)
|
||||||
|
data = save_and_get_json(page)
|
||||||
|
assert data["features"][0]["geometry"] == {
|
||||||
|
"coordinates": [
|
||||||
|
[
|
||||||
|
-121.7295456,
|
||||||
|
45.4431641,
|
||||||
|
],
|
||||||
|
[
|
||||||
|
-121.72908,
|
||||||
|
45.4428615,
|
||||||
|
],
|
||||||
|
[
|
||||||
|
-121.7279085,
|
||||||
|
45.4425697,
|
||||||
|
],
|
||||||
|
],
|
||||||
|
"type": "LineString",
|
||||||
|
}
|
||||||
|
assert data["features"][0]["properties"] == {
|
||||||
|
"description": "Simple description",
|
||||||
|
"desc": "Simple description",
|
||||||
|
"name": "Simple path",
|
||||||
|
}
|
||||||
|
assert data["features"][1]["geometry"] == {
|
||||||
|
"coordinates": [
|
||||||
|
-121.72904,
|
||||||
|
45.44283,
|
||||||
|
1374,
|
||||||
|
],
|
||||||
|
"type": "Point",
|
||||||
|
}
|
||||||
|
assert data["features"][1]["properties"] == {
|
||||||
|
"description": "Simple description",
|
||||||
|
"desc": "Simple description",
|
||||||
|
"name": "Simple Point",
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
def test_import_osm_from_textarea(tilelayer, live_server, page):
|
def test_import_osm_from_textarea(tilelayer, live_server, page):
|
||||||
|
|
Loading…
Reference in a new issue