Merge pull request #1613 from umap-project/fix-star-control
fix: star control was using old post method
This commit is contained in:
commit
8eb2a518f1
2 changed files with 39 additions and 13 deletions
|
@ -401,7 +401,7 @@ U.Map = L.Map.extend({
|
||||||
this._controls.search = new U.SearchControl()
|
this._controls.search = new U.SearchControl()
|
||||||
this._controls.embed = new L.Control.Embed(this, this.options.embedOptions)
|
this._controls.embed = new L.Control.Embed(this, this.options.embedOptions)
|
||||||
this._controls.tilelayersChooser = new U.TileLayerChooser(this)
|
this._controls.tilelayersChooser = new U.TileLayerChooser(this)
|
||||||
this._controls.star = new U.StarControl(this)
|
if (this.options.user) this._controls.star = new U.StarControl(this)
|
||||||
this._controls.editinosm = new L.Control.EditInOSM({
|
this._controls.editinosm = new L.Control.EditInOSM({
|
||||||
position: 'topleft',
|
position: 'topleft',
|
||||||
widgetOptions: {
|
widgetOptions: {
|
||||||
|
@ -468,6 +468,7 @@ U.Map = L.Map.extend({
|
||||||
status = this.options[`${name}Control`]
|
status = this.options[`${name}Control`]
|
||||||
if (status === false) continue
|
if (status === false) continue
|
||||||
control = this._controls[name]
|
control = this._controls[name]
|
||||||
|
if (!control) continue
|
||||||
control.addTo(this)
|
control.addTo(this)
|
||||||
if (status === undefined || status === null)
|
if (status === undefined || status === null)
|
||||||
L.DomUtil.addClass(control._container, 'display-on-more')
|
L.DomUtil.addClass(control._container, 'display-on-more')
|
||||||
|
@ -1142,24 +1143,22 @@ U.Map = L.Map.extend({
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
|
||||||
star: function () {
|
star: async function () {
|
||||||
if (!this.options.umap_id)
|
if (!this.options.umap_id)
|
||||||
return this.ui.alert({
|
return this.ui.alert({
|
||||||
content: L._('Please save the map first'),
|
content: L._('Please save the map first'),
|
||||||
level: 'error',
|
level: 'error',
|
||||||
})
|
})
|
||||||
const url = this.urls.get('map_star', { map_id: this.options.umap_id })
|
const url = this.urls.get('map_star', { map_id: this.options.umap_id })
|
||||||
this.post(url, {
|
const [data, response, error] = await this.server.post(url)
|
||||||
context: this,
|
if (!error) {
|
||||||
callback: function (data) {
|
|
||||||
this.options.starred = data.starred
|
this.options.starred = data.starred
|
||||||
let msg = data.starred
|
let msg = data.starred
|
||||||
? L._('Map has been starred')
|
? L._('Map has been starred')
|
||||||
: L._('Map has been unstarred')
|
: L._('Map has been unstarred')
|
||||||
this.ui.alert({ content: msg, level: 'info' })
|
this.ui.alert({ content: msg, level: 'info' })
|
||||||
this.renderControls()
|
this.renderControls()
|
||||||
},
|
}
|
||||||
})
|
|
||||||
},
|
},
|
||||||
|
|
||||||
geometry: function () {
|
geometry: function () {
|
||||||
|
|
27
umap/tests/integration/test_star.py
Normal file
27
umap/tests/integration/test_star.py
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
import re
|
||||||
|
|
||||||
|
import pytest
|
||||||
|
from playwright.sync_api import expect
|
||||||
|
|
||||||
|
from umap.models import Star
|
||||||
|
|
||||||
|
pytestmark = pytest.mark.django_db
|
||||||
|
|
||||||
|
|
||||||
|
def test_star_control_is_visible_if_logged_in(map, live_server, page, login, user):
|
||||||
|
login(user)
|
||||||
|
assert not Star.objects.count()
|
||||||
|
page.goto(f"{live_server.url}{map.get_absolute_url()}")
|
||||||
|
page.get_by_title("More controls").click()
|
||||||
|
control = page.locator(".leaflet-control-star")
|
||||||
|
expect(control).to_be_visible()
|
||||||
|
with page.expect_response(re.compile(".*/star/")):
|
||||||
|
control.click()
|
||||||
|
assert Star.objects.count() == 1
|
||||||
|
|
||||||
|
|
||||||
|
def test_no_star_control_if_not_logged_in(map, live_server, page):
|
||||||
|
page.goto(f"{live_server.url}{map.get_absolute_url()}")
|
||||||
|
page.get_by_title("More controls").click()
|
||||||
|
control = page.locator(".leaflet-control-star")
|
||||||
|
expect(control).to_be_hidden()
|
Loading…
Reference in a new issue