umap-project 2.7.0__py3-none-any.whl → 2.7.0b0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of umap-project might be problematic. Click here for more details.
- umap/__init__.py +1 -1
- umap/locale/es/LC_MESSAGES/django.mo +0 -0
- umap/locale/es/LC_MESSAGES/django.po +128 -134
- umap/settings/base.py +1 -1
- umap/static/umap/css/contextmenu.css +1 -1
- umap/static/umap/css/importers.css +0 -4
- umap/static/umap/img/16.svg +184 -1
- umap/static/umap/img/24-white.svg +0 -1
- umap/static/umap/img/24.svg +0 -1
- umap/static/umap/img/source/16.svg +200 -753
- umap/static/umap/img/source/24-white.svg +2 -3
- umap/static/umap/img/source/24.svg +2 -3
- umap/static/umap/js/modules/browser.js +0 -47
- umap/static/umap/js/modules/caption.js +4 -10
- umap/static/umap/js/modules/data/layer.js +14 -26
- umap/static/umap/js/modules/importer.js +0 -3
- umap/static/umap/js/modules/importers/communesfr.js +2 -2
- umap/static/umap/js/modules/rendering/layers/classified.js +0 -2
- umap/static/umap/js/modules/rendering/ui.js +6 -28
- umap/static/umap/js/modules/share.js +3 -1
- umap/static/umap/js/modules/slideshow.js +1 -1
- umap/static/umap/js/modules/sync/engine.js +8 -14
- umap/static/umap/js/modules/sync/hlc.js +3 -3
- umap/static/umap/js/modules/sync/updaters.js +2 -14
- umap/static/umap/js/modules/tableeditor.js +1 -1
- umap/static/umap/js/modules/ui/contextmenu.js +2 -18
- umap/static/umap/js/modules/utils.js +4 -24
- umap/static/umap/js/umap.controls.js +10 -31
- umap/static/umap/js/umap.core.js +1 -1
- umap/static/umap/js/umap.js +23 -31
- umap/static/umap/locale/ca.js +4 -8
- umap/static/umap/locale/ca.json +4 -8
- umap/static/umap/locale/en.js +1 -5
- umap/static/umap/locale/en.json +1 -5
- umap/static/umap/locale/es.js +319 -330
- umap/static/umap/locale/es.json +319 -330
- umap/static/umap/locale/fr.js +1 -5
- umap/static/umap/locale/fr.json +1 -5
- umap/static/umap/map.css +7 -37
- umap/static/umap/unittests/hlc.js +3 -10
- umap/static/umap/unittests/utils.js +0 -24
- umap/static/umap/vars.css +1 -2
- umap/static/umap/vendors/colorbrewer/colorbrewer.js +317 -309
- umap/static/umap/vendors/dompurify/purify.es.js +16 -15
- umap/static/umap/vendors/dompurify/purify.es.mjs.map +1 -1
- umap/static/umap/vendors/locatecontrol/L.Control.Locate.min.js +2 -2
- umap/static/umap/vendors/locatecontrol/L.Control.Locate.min.js.map +1 -1
- umap/static/umap/vendors/simple-statistics/simple-statistics.min.js +1 -1
- umap/static/umap/vendors/simple-statistics/simple-statistics.min.js.map +1 -1
- umap/templates/umap/css.html +2 -0
- umap/templates/umap/js.html +1 -0
- umap/templates/umap/map_detail.html +2 -2
- umap/tests/fixtures/test_upload_data.csv +2 -2
- umap/tests/integration/test_browser.py +7 -69
- umap/tests/integration/test_caption.py +3 -3
- umap/tests/integration/test_datalayer.py +5 -1
- umap/tests/integration/test_edit_datalayer.py +2 -1
- umap/tests/integration/test_edit_map.py +1 -1
- umap/tests/integration/test_edit_marker.py +1 -1
- umap/tests/integration/test_facets_browser.py +3 -3
- umap/tests/integration/test_import.py +4 -0
- umap/tests/integration/test_map.py +4 -0
- umap/tests/integration/test_view_marker.py +0 -63
- umap/tests/test_map_views.py +0 -19
- {umap_project-2.7.0.dist-info → umap_project-2.7.0b0.dist-info}/METADATA +10 -14
- {umap_project-2.7.0.dist-info → umap_project-2.7.0b0.dist-info}/RECORD +69 -72
- umap/asgi.py +0 -15
- umap/static/umap/img/importers/cadastrefr.svg +0 -23
- umap/static/umap/js/modules/importers/cadastrefr.js +0 -62
- {umap_project-2.7.0.dist-info → umap_project-2.7.0b0.dist-info}/WHEEL +0 -0
- {umap_project-2.7.0.dist-info → umap_project-2.7.0b0.dist-info}/entry_points.txt +0 -0
- {umap_project-2.7.0.dist-info → umap_project-2.7.0b0.dist-info}/licenses/LICENSE +0 -0
umap/templates/umap/css.html
CHANGED
|
@@ -10,6 +10,8 @@
|
|
|
10
10
|
href="{% static 'umap/vendors/editinosm/Leaflet.EditInOSM.css' %}" />
|
|
11
11
|
<link rel="stylesheet"
|
|
12
12
|
href="{% static 'umap/vendors/minimap/Control.MiniMap.min.css' %}" />
|
|
13
|
+
<link rel="stylesheet"
|
|
14
|
+
href="{% static 'umap/vendors/contextmenu/leaflet.contextmenu.min.css' %}" />
|
|
13
15
|
<link rel="stylesheet"
|
|
14
16
|
href="{% static 'umap/vendors/toolbar/leaflet.toolbar.css' %}" />
|
|
15
17
|
<link rel="stylesheet"
|
umap/templates/umap/js.html
CHANGED
|
@@ -36,6 +36,7 @@
|
|
|
36
36
|
<script src="{% static 'umap/vendors/iconlayers/iconLayers.js' %}" defer></script>
|
|
37
37
|
<script src="{% static 'umap/vendors/locatecontrol/L.Control.Locate.min.js' %}"
|
|
38
38
|
defer></script>
|
|
39
|
+
<script src="{% static 'umap/vendors/colorbrewer/colorbrewer.js' %}" defer></script>
|
|
39
40
|
<script src="{% static 'umap/vendors/simple-statistics/simple-statistics.min.js' %}"
|
|
40
41
|
defer></script>
|
|
41
42
|
<script src="{% static 'umap/js/umap.core.js' %}" defer></script>
|
|
@@ -17,8 +17,8 @@
|
|
|
17
17
|
{% umap_css %}
|
|
18
18
|
{{ block.super }}
|
|
19
19
|
{% umap_js locale=locale %}
|
|
20
|
-
{% if
|
|
21
|
-
<meta name="robots" content="noindex
|
|
20
|
+
{% if object.share_status != object.PUBLIC %}
|
|
21
|
+
<meta name="robots" content="noindex">
|
|
22
22
|
{% endif %}
|
|
23
23
|
<link rel="alternate"
|
|
24
24
|
type="application/json+oembed"
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
Foo,Latitude,geo_Longitude,title,description
|
|
2
|
-
bar,
|
|
3
|
-
bar,
|
|
2
|
+
bar,41.34,122.86,a point somewhere,the description of this point
|
|
3
|
+
bar,43.34,121.86,a point somewhere else,the description of this other point
|
|
@@ -81,7 +81,7 @@ def test_data_browser_should_be_open(live_server, page, bootstrap, map):
|
|
|
81
81
|
|
|
82
82
|
|
|
83
83
|
def test_data_browser_should_be_filterable(live_server, page, bootstrap, map):
|
|
84
|
-
page.goto(f"{live_server.url}{map.get_absolute_url()}
|
|
84
|
+
page.goto(f"{live_server.url}{map.get_absolute_url()}")
|
|
85
85
|
expect(page.get_by_title("Features in this layer: 3")).to_be_visible()
|
|
86
86
|
markers = page.locator(".leaflet-marker-icon")
|
|
87
87
|
paths = page.locator(".leaflet-overlay-pane path")
|
|
@@ -115,7 +115,7 @@ def test_filter_uses_layer_setting_if_any(live_server, page, bootstrap, map):
|
|
|
115
115
|
datalayer = map.datalayer_set.first()
|
|
116
116
|
datalayer.settings["labelKey"] = "foo"
|
|
117
117
|
datalayer.save()
|
|
118
|
-
page.goto(f"{live_server.url}{map.get_absolute_url()}
|
|
118
|
+
page.goto(f"{live_server.url}{map.get_absolute_url()}")
|
|
119
119
|
expect(page.get_by_title("Features in this layer: 3")).to_be_visible()
|
|
120
120
|
markers = page.locator(".leaflet-marker-icon")
|
|
121
121
|
paths = page.locator(".leaflet-overlay-pane path")
|
|
@@ -154,7 +154,7 @@ def test_filter_works_with_variable_in_labelKey(live_server, page, map):
|
|
|
154
154
|
data = deepcopy(DATALAYER_DATA)
|
|
155
155
|
data["_umap_options"]["labelKey"] = "{name} ({bar})"
|
|
156
156
|
DataLayerFactory(map=map, data=data)
|
|
157
|
-
page.goto(f"{live_server.url}{map.get_absolute_url()}
|
|
157
|
+
page.goto(f"{live_server.url}{map.get_absolute_url()}")
|
|
158
158
|
expect(page.get_by_title("Features in this layer: 3")).to_be_visible()
|
|
159
159
|
markers = page.locator(".leaflet-marker-icon")
|
|
160
160
|
paths = page.locator(".leaflet-overlay-pane path")
|
|
@@ -182,7 +182,7 @@ def test_filter_works_with_missing_name(live_server, page, map):
|
|
|
182
182
|
data = deepcopy(DATALAYER_DATA)
|
|
183
183
|
del data["features"][0]["properties"]["name"]
|
|
184
184
|
DataLayerFactory(map=map, data=data, name="foobar")
|
|
185
|
-
page.goto(f"{live_server.url}{map.get_absolute_url()}
|
|
185
|
+
page.goto(f"{live_server.url}{map.get_absolute_url()}")
|
|
186
186
|
expect(page.get_by_title("Features in this layer: 3")).to_be_visible()
|
|
187
187
|
markers = page.locator(".leaflet-marker-icon")
|
|
188
188
|
paths = page.locator(".leaflet-overlay-pane path")
|
|
@@ -299,7 +299,7 @@ def test_data_browser_with_variable_in_name(live_server, page, bootstrap, map):
|
|
|
299
299
|
# Include a variable
|
|
300
300
|
map.settings["properties"]["labelKey"] = "{name} ({foo})"
|
|
301
301
|
map.save()
|
|
302
|
-
page.goto(f"{live_server.url}{map.get_absolute_url()}
|
|
302
|
+
page.goto(f"{live_server.url}{map.get_absolute_url()}")
|
|
303
303
|
expect(page.get_by_text("one point in france (point)")).to_be_visible()
|
|
304
304
|
expect(page.get_by_text("one line in new zeland (line)")).to_be_visible()
|
|
305
305
|
expect(page.get_by_text("one polygon in greenland (polygon)")).to_be_visible()
|
|
@@ -335,7 +335,7 @@ def test_should_sort_features_in_natural_order(live_server, map, page):
|
|
|
335
335
|
|
|
336
336
|
|
|
337
337
|
def test_should_redraw_list_on_feature_delete(live_server, openmap, page, bootstrap):
|
|
338
|
-
page.goto(f"{live_server.url}{openmap.get_absolute_url()}
|
|
338
|
+
page.goto(f"{live_server.url}{openmap.get_absolute_url()}")
|
|
339
339
|
# Enable edit
|
|
340
340
|
page.get_by_role("button", name="Edit").click()
|
|
341
341
|
buttons = page.locator(".umap-browser .datalayer li .icon-delete")
|
|
@@ -380,7 +380,7 @@ def test_should_use_color_variable(live_server, map, page):
|
|
|
380
380
|
|
|
381
381
|
|
|
382
382
|
def test_should_allow_to_toggle_datalayer_visibility(live_server, map, page, bootstrap):
|
|
383
|
-
page.goto(f"{live_server.url}{map.get_absolute_url()}
|
|
383
|
+
page.goto(f"{live_server.url}{map.get_absolute_url()}")
|
|
384
384
|
markers = page.locator(".leaflet-marker-icon")
|
|
385
385
|
paths = page.locator(".leaflet-overlay-pane path")
|
|
386
386
|
expect(markers).to_have_count(1)
|
|
@@ -414,65 +414,3 @@ def test_should_have_edit_buttons_in_edit_mode(live_server, openmap, page, boots
|
|
|
414
414
|
expect(delete_layer).to_be_visible()
|
|
415
415
|
expect(edit_feature).to_have_count(3)
|
|
416
416
|
expect(delete_feature).to_have_count(3)
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
def test_main_toolbox_toggle_all_layers(live_server, map, page):
|
|
420
|
-
map.settings["properties"]["onLoadPanel"] = "databrowser"
|
|
421
|
-
map.save()
|
|
422
|
-
data = {
|
|
423
|
-
"type": "FeatureCollection",
|
|
424
|
-
"features": [
|
|
425
|
-
{
|
|
426
|
-
"type": "Feature",
|
|
427
|
-
"properties": {"name": "one point"},
|
|
428
|
-
"geometry": {"type": "Point", "coordinates": [3.33, 46.92]},
|
|
429
|
-
},
|
|
430
|
-
],
|
|
431
|
-
}
|
|
432
|
-
DataLayerFactory(map=map, data=data)
|
|
433
|
-
data = {
|
|
434
|
-
"type": "FeatureCollection",
|
|
435
|
-
"features": [
|
|
436
|
-
{
|
|
437
|
-
"type": "Feature",
|
|
438
|
-
"properties": {"name": "one other point"},
|
|
439
|
-
"geometry": {"type": "Point", "coordinates": [3.34, 46.94]},
|
|
440
|
-
},
|
|
441
|
-
],
|
|
442
|
-
}
|
|
443
|
-
DataLayerFactory(map=map, data=data)
|
|
444
|
-
data = {
|
|
445
|
-
"type": "FeatureCollection",
|
|
446
|
-
"features": [
|
|
447
|
-
{
|
|
448
|
-
"type": "Feature",
|
|
449
|
-
"properties": {"name": "another point"},
|
|
450
|
-
"geometry": {"type": "Point", "coordinates": [3.35, 46.95]},
|
|
451
|
-
},
|
|
452
|
-
],
|
|
453
|
-
"_umap_options": {"displayOnLoad": False},
|
|
454
|
-
}
|
|
455
|
-
DataLayerFactory(map=map, data=data, settings={"displayOnLoad": False})
|
|
456
|
-
page.goto(f"{live_server.url}{map.get_absolute_url()}#10/46.93/3.33")
|
|
457
|
-
markers = page.locator(".leaflet-marker-icon")
|
|
458
|
-
expect(markers).to_have_count(2)
|
|
459
|
-
# Only one is off
|
|
460
|
-
expect(page.locator(".datalayer.off")).to_have_count(1)
|
|
461
|
-
|
|
462
|
-
# Click on button
|
|
463
|
-
page.locator(".umap-browser [data-ref=toggle]").click()
|
|
464
|
-
# Should have hidden the two other layers
|
|
465
|
-
expect(page.locator(".datalayer.off")).to_have_count(3)
|
|
466
|
-
expect(markers).to_have_count(0)
|
|
467
|
-
|
|
468
|
-
# Click again
|
|
469
|
-
page.locator(".umap-browser [data-ref=toggle]").click()
|
|
470
|
-
# Should shown all layers
|
|
471
|
-
expect(page.locator(".datalayer.off")).to_have_count(0)
|
|
472
|
-
expect(markers).to_have_count(3)
|
|
473
|
-
|
|
474
|
-
# Click again
|
|
475
|
-
page.locator(".umap-browser [data-ref=toggle]").click()
|
|
476
|
-
# Should hidden again all layers
|
|
477
|
-
expect(page.locator(".datalayer.off")).to_have_count(3)
|
|
478
|
-
expect(markers).to_have_count(0)
|
|
@@ -20,11 +20,11 @@ def test_caption(live_server, page, map):
|
|
|
20
20
|
panel = page.locator(".panel.left.on")
|
|
21
21
|
expect(panel).to_have_class(re.compile(".*condensed.*"))
|
|
22
22
|
expect(panel.locator(".umap-caption")).to_be_visible()
|
|
23
|
-
expect(panel.locator(".
|
|
23
|
+
expect(panel.locator(".datalayer-legend").get_by_text(basic.name)).to_be_visible()
|
|
24
24
|
expect(
|
|
25
|
-
panel.locator(".
|
|
25
|
+
panel.locator(".datalayer-legend .off").get_by_text(non_loaded.name)
|
|
26
26
|
).to_be_visible()
|
|
27
|
-
expect(panel.locator(".
|
|
27
|
+
expect(panel.locator(".datalayer-legend").get_by_text(hidden.name)).to_be_hidden()
|
|
28
28
|
|
|
29
29
|
|
|
30
30
|
def test_caption_should_display_owner_as_author(live_server, page, map):
|
|
@@ -55,6 +55,10 @@ def test_should_honour_fromZoom(live_server, map, datalayer, page):
|
|
|
55
55
|
expect(markers).to_be_visible()
|
|
56
56
|
|
|
57
57
|
|
|
58
|
+
@pytest.mark.skipif(
|
|
59
|
+
os.environ.get("CI", "false") == "true",
|
|
60
|
+
reason="Test is failing intermittently, skipping in the CI",
|
|
61
|
+
)
|
|
58
62
|
def test_should_honour_toZoom(live_server, map, datalayer, page):
|
|
59
63
|
set_options(datalayer, displayOnLoad=True, toZoom=6)
|
|
60
64
|
page.goto(f"{live_server.url}{map.get_absolute_url()}#7/48.55/14.68")
|
|
@@ -107,7 +111,7 @@ def test_should_honour_color_variable(live_server, map, page):
|
|
|
107
111
|
},
|
|
108
112
|
}
|
|
109
113
|
DataLayerFactory(map=map, data=data)
|
|
110
|
-
page.goto(f"{live_server.url}{map.get_absolute_url()}
|
|
114
|
+
page.goto(f"{live_server.url}{map.get_absolute_url()}")
|
|
111
115
|
expect(page.locator(".leaflet-overlay-pane path[fill='tomato']"))
|
|
112
116
|
markers = page.locator(".leaflet-marker-icon .icon_container")
|
|
113
117
|
expect(markers).to_have_css("background-color", "rgb(240, 248, 255)")
|
|
@@ -86,6 +86,7 @@ def test_can_clone_datalayer(live_server, openmap, login, datalayer, page):
|
|
|
86
86
|
|
|
87
87
|
|
|
88
88
|
def test_can_change_icon_class(live_server, openmap, page):
|
|
89
|
+
# Faster than doing a login
|
|
89
90
|
data = {
|
|
90
91
|
"type": "FeatureCollection",
|
|
91
92
|
"features": [
|
|
@@ -97,7 +98,7 @@ def test_can_change_icon_class(live_server, openmap, page):
|
|
|
97
98
|
],
|
|
98
99
|
}
|
|
99
100
|
DataLayerFactory(map=openmap, data=data)
|
|
100
|
-
page.goto(f"{live_server.url}{openmap.get_absolute_url()}?edit
|
|
101
|
+
page.goto(f"{live_server.url}{openmap.get_absolute_url()}?edit")
|
|
101
102
|
expect(page.locator(".umap-div-icon")).to_be_visible()
|
|
102
103
|
page.get_by_role("link", name="Manage layers").click()
|
|
103
104
|
expect(page.locator(".umap-circle-icon")).to_be_hidden()
|
|
@@ -23,7 +23,7 @@ def test_can_edit_name(page, live_server, tilelayer):
|
|
|
23
23
|
|
|
24
24
|
def test_can_edit_name_on_click_on_toolbar(page, live_server, tilelayer):
|
|
25
25
|
page.goto(f"{live_server.url}/en/map/new/")
|
|
26
|
-
page.locator(".
|
|
26
|
+
page.locator(".map-name").click()
|
|
27
27
|
name_input = page.locator('.map-metadata input[name="name"]')
|
|
28
28
|
expect(name_input).to_be_visible()
|
|
29
29
|
|
|
@@ -40,7 +40,7 @@ def test_can_edit_on_shift_click(live_server, openmap, page, datalayer):
|
|
|
40
40
|
|
|
41
41
|
|
|
42
42
|
def test_marker_style_should_have_precedence(live_server, openmap, page, bootstrap):
|
|
43
|
-
page.goto(f"{live_server.url}{openmap.get_absolute_url()}?edit
|
|
43
|
+
page.goto(f"{live_server.url}{openmap.get_absolute_url()}?edit")
|
|
44
44
|
|
|
45
45
|
# Change colour at layer level
|
|
46
46
|
page.get_by_role("link", name="Manage layers").click()
|
|
@@ -175,7 +175,7 @@ def test_date_facet_search(live_server, page, map):
|
|
|
175
175
|
map.save()
|
|
176
176
|
DataLayerFactory(map=map, data=DATALAYER_DATA1)
|
|
177
177
|
DataLayerFactory(map=map, data=DATALAYER_DATA2)
|
|
178
|
-
page.goto(f"{live_server.url}{map.get_absolute_url()}
|
|
178
|
+
page.goto(f"{live_server.url}{map.get_absolute_url()}")
|
|
179
179
|
markers = page.locator(".leaflet-marker-icon")
|
|
180
180
|
expect(markers).to_have_count(4)
|
|
181
181
|
expect(page.get_by_text("Date Filter")).to_be_visible()
|
|
@@ -196,7 +196,7 @@ def test_choice_with_empty_value(live_server, page, map):
|
|
|
196
196
|
del data["features"][1]["properties"]["mytype"]
|
|
197
197
|
DataLayerFactory(map=map, data=data)
|
|
198
198
|
DataLayerFactory(map=map, data=DATALAYER_DATA2)
|
|
199
|
-
page.goto(f"{live_server.url}{map.get_absolute_url()}
|
|
199
|
+
page.goto(f"{live_server.url}{map.get_absolute_url()}")
|
|
200
200
|
expect(page.get_by_text("<empty value>")).to_be_visible()
|
|
201
201
|
markers = page.locator(".leaflet-marker-icon")
|
|
202
202
|
expect(markers).to_have_count(4)
|
|
@@ -212,7 +212,7 @@ def test_number_with_zero_value(live_server, page, map):
|
|
|
212
212
|
data["features"][0]["properties"]["mynumber"] = 0
|
|
213
213
|
DataLayerFactory(map=map, data=data)
|
|
214
214
|
DataLayerFactory(map=map, data=DATALAYER_DATA2)
|
|
215
|
-
page.goto(f"{live_server.url}{map.get_absolute_url()}
|
|
215
|
+
page.goto(f"{live_server.url}{map.get_absolute_url()}")
|
|
216
216
|
expect(page.get_by_label("Min")).to_have_value("0")
|
|
217
217
|
expect(page.get_by_label("Max")).to_have_value("14")
|
|
218
218
|
page.get_by_label("Min").fill("1")
|
|
@@ -71,6 +71,10 @@ def test_umap_import_from_file(live_server, tilelayer, page):
|
|
|
71
71
|
expect(nonloaded).to_have_count(1)
|
|
72
72
|
|
|
73
73
|
|
|
74
|
+
@pytest.mark.skipif(
|
|
75
|
+
os.environ.get("CI", "false") == "true",
|
|
76
|
+
reason="Test is failing intermittently, skipping in the CI",
|
|
77
|
+
)
|
|
74
78
|
def test_umap_import_from_textarea(live_server, tilelayer, page, settings):
|
|
75
79
|
settings.UMAP_ALLOW_ANONYMOUS = True
|
|
76
80
|
page.goto(f"{live_server.url}/map/new/")
|
|
@@ -148,6 +148,10 @@ def test_default_view_latest_with_polygon(map, live_server, page):
|
|
|
148
148
|
expect(layers).to_have_count(1)
|
|
149
149
|
|
|
150
150
|
|
|
151
|
+
@pytest.mark.skipif(
|
|
152
|
+
os.environ.get("CI", "false") == "true",
|
|
153
|
+
reason="Test is failing intermittently, skipping in the CI",
|
|
154
|
+
)
|
|
151
155
|
def test_default_view_locate(browser, live_server, map):
|
|
152
156
|
context = browser.new_context(
|
|
153
157
|
geolocation={"longitude": 8.52967, "latitude": 39.16267},
|
|
@@ -106,66 +106,3 @@ def test_extended_properties_in_popup(live_server, map, page, bootstrap):
|
|
|
106
106
|
expect(page.get_by_text("Alt: 241")).to_be_visible()
|
|
107
107
|
expect(page.get_by_text("Zoom: 7")).to_be_visible()
|
|
108
108
|
expect(page.get_by_text("Layer: test datalayer")).to_be_visible()
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
def test_only_visible_markers_are_added_to_dom(live_server, map, page):
|
|
112
|
-
data = {
|
|
113
|
-
"type": "FeatureCollection",
|
|
114
|
-
"features": [
|
|
115
|
-
{
|
|
116
|
-
"type": "Feature",
|
|
117
|
-
"properties": {
|
|
118
|
-
"name": "marker 1",
|
|
119
|
-
"description": "added to dom",
|
|
120
|
-
},
|
|
121
|
-
"geometry": {
|
|
122
|
-
"type": "Point",
|
|
123
|
-
"coordinates": [14.6, 48.5],
|
|
124
|
-
},
|
|
125
|
-
},
|
|
126
|
-
{
|
|
127
|
-
"type": "Feature",
|
|
128
|
-
"properties": {
|
|
129
|
-
"name": "marker 2",
|
|
130
|
-
"description": "not added to dom at load",
|
|
131
|
-
},
|
|
132
|
-
"geometry": {
|
|
133
|
-
"type": "Point",
|
|
134
|
-
"coordinates": [12.6, 44.5],
|
|
135
|
-
},
|
|
136
|
-
},
|
|
137
|
-
],
|
|
138
|
-
}
|
|
139
|
-
DataLayerFactory(map=map, data=data)
|
|
140
|
-
map.settings["properties"]["showLabel"] = True
|
|
141
|
-
map.save()
|
|
142
|
-
page.goto(f"{live_server.url}{map.get_absolute_url()}")
|
|
143
|
-
markers = page.locator(".leaflet-marker-icon")
|
|
144
|
-
tooltips = page.locator(".leaflet-tooltip")
|
|
145
|
-
expect(markers).to_have_count(1)
|
|
146
|
-
expect(tooltips).to_have_count(1)
|
|
147
|
-
|
|
148
|
-
# Zoom in/out to show the other marker
|
|
149
|
-
page.get_by_label("Zoom out").click()
|
|
150
|
-
expect(markers).to_have_count(2)
|
|
151
|
-
expect(tooltips).to_have_count(2)
|
|
152
|
-
page.get_by_label("Zoom in").click()
|
|
153
|
-
expect(markers).to_have_count(1)
|
|
154
|
-
expect(tooltips).to_have_count(1)
|
|
155
|
-
|
|
156
|
-
# Drag map to show/hide the marker
|
|
157
|
-
map_el = page.locator("#map")
|
|
158
|
-
map_el.drag_to(
|
|
159
|
-
map_el,
|
|
160
|
-
source_position={"x": 100, "y": 600},
|
|
161
|
-
target_position={"x": 100, "y": 200},
|
|
162
|
-
)
|
|
163
|
-
expect(markers).to_have_count(2)
|
|
164
|
-
expect(tooltips).to_have_count(2)
|
|
165
|
-
map_el.drag_to(
|
|
166
|
-
map_el,
|
|
167
|
-
source_position={"x": 100, "y": 600},
|
|
168
|
-
target_position={"x": 100, "y": 200},
|
|
169
|
-
)
|
|
170
|
-
expect(markers).to_have_count(1)
|
|
171
|
-
expect(tooltips).to_have_count(1)
|
umap/tests/test_map_views.py
CHANGED
|
@@ -861,22 +861,3 @@ def test_ogp_links(client, map, datalayer):
|
|
|
861
861
|
assert f'<meta property="og:title" content="{map.name}" />' in content
|
|
862
862
|
assert f'<meta property="og:description" content="{map.description}" />' in content
|
|
863
863
|
assert '<meta property="og:site_name" content="uMap" />' in content
|
|
864
|
-
|
|
865
|
-
|
|
866
|
-
def test_non_public_map_should_have_noindex_meta(client, map, datalayer):
|
|
867
|
-
map.share_status = Map.OPEN
|
|
868
|
-
map.save()
|
|
869
|
-
response = client.get(map.get_absolute_url())
|
|
870
|
-
assert response.status_code == 200
|
|
871
|
-
assert (
|
|
872
|
-
'<meta name="robots" content="noindex,nofollow">' in response.content.decode()
|
|
873
|
-
)
|
|
874
|
-
|
|
875
|
-
|
|
876
|
-
def test_demo_instance_should_have_noindex(client, map, datalayer, settings):
|
|
877
|
-
settings.UMAP_DEMO_SITE = True
|
|
878
|
-
response = client.get(map.get_absolute_url())
|
|
879
|
-
assert response.status_code == 200
|
|
880
|
-
assert (
|
|
881
|
-
'<meta name="robots" content="noindex,nofollow">' in response.content.decode()
|
|
882
|
-
)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: umap-project
|
|
3
|
-
Version: 2.7.
|
|
3
|
+
Version: 2.7.0b0
|
|
4
4
|
Summary: Create maps with OpenStreetMap layers in a minute and embed them in your site.
|
|
5
5
|
Author-email: Yohan Boniface <yb@enix.org>
|
|
6
6
|
Maintainer-email: David Larlet <david@larlet.fr>
|
|
@@ -19,37 +19,33 @@ Requires-Python: >=3.10
|
|
|
19
19
|
Requires-Dist: django-agnocomplete==2.2.0
|
|
20
20
|
Requires-Dist: django-environ==0.11.2
|
|
21
21
|
Requires-Dist: django-probes==1.7.0
|
|
22
|
-
Requires-Dist: django==5.1.
|
|
23
|
-
Requires-Dist: pillow==
|
|
22
|
+
Requires-Dist: django==5.1.1
|
|
23
|
+
Requires-Dist: pillow==10.4.0
|
|
24
24
|
Requires-Dist: psycopg==3.2.3
|
|
25
|
-
Requires-Dist:
|
|
25
|
+
Requires-Dist: pydantic==2.9.2
|
|
26
|
+
Requires-Dist: rcssmin==1.1.2
|
|
26
27
|
Requires-Dist: requests==2.32.3
|
|
27
|
-
Requires-Dist: rjsmin==1.2.
|
|
28
|
+
Requires-Dist: rjsmin==1.2.2
|
|
28
29
|
Requires-Dist: social-auth-app-django==5.4.2
|
|
29
30
|
Requires-Dist: social-auth-core==4.5.4
|
|
31
|
+
Requires-Dist: websockets==13.1
|
|
30
32
|
Provides-Extra: dev
|
|
31
33
|
Requires-Dist: djlint==1.35.2; extra == 'dev'
|
|
32
|
-
Requires-Dist: hatch==1.
|
|
34
|
+
Requires-Dist: hatch==1.12.0; extra == 'dev'
|
|
33
35
|
Requires-Dist: isort==5.13.2; extra == 'dev'
|
|
34
|
-
Requires-Dist: mkdocs-material==9.5.
|
|
36
|
+
Requires-Dist: mkdocs-material==9.5.39; extra == 'dev'
|
|
35
37
|
Requires-Dist: mkdocs-static-i18n==1.2.3; extra == 'dev'
|
|
36
38
|
Requires-Dist: mkdocs==1.6.1; extra == 'dev'
|
|
37
39
|
Requires-Dist: pymdown-extensions==10.11.2; extra == 'dev'
|
|
38
|
-
Requires-Dist: ruff==0.
|
|
40
|
+
Requires-Dist: ruff==0.6.8; extra == 'dev'
|
|
39
41
|
Requires-Dist: vermin==1.6.0; extra == 'dev'
|
|
40
42
|
Provides-Extra: docker
|
|
41
43
|
Requires-Dist: uwsgi==2.0.27; extra == 'docker'
|
|
42
|
-
Provides-Extra: sync
|
|
43
|
-
Requires-Dist: channels==4.1.0; extra == 'sync'
|
|
44
|
-
Requires-Dist: daphne==4.1.2; extra == 'sync'
|
|
45
|
-
Requires-Dist: pydantic==2.9.2; extra == 'sync'
|
|
46
|
-
Requires-Dist: websockets==13.1; extra == 'sync'
|
|
47
44
|
Provides-Extra: test
|
|
48
45
|
Requires-Dist: factory-boy==3.3.1; extra == 'test'
|
|
49
46
|
Requires-Dist: playwright>=1.39; extra == 'test'
|
|
50
47
|
Requires-Dist: pytest-django==4.9.0; extra == 'test'
|
|
51
48
|
Requires-Dist: pytest-playwright==0.5.2; extra == 'test'
|
|
52
|
-
Requires-Dist: pytest-rerunfailures==14.0; extra == 'test'
|
|
53
49
|
Requires-Dist: pytest-xdist<4,>=3.5.0; extra == 'test'
|
|
54
50
|
Requires-Dist: pytest==8.3.3; extra == 'test'
|
|
55
51
|
Description-Content-Type: text/markdown
|