mirror of
https://github.com/umap-project/umap.git
synced 2025-04-29 11:52:38 +02:00
fix: show delete button for owner and anonymous owner
This commit is contained in:
parent
3bdd5bedf1
commit
5145404dc4
5 changed files with 38 additions and 17 deletions
|
@ -34,7 +34,7 @@ export class MapPermissions {
|
||||||
}
|
}
|
||||||
|
|
||||||
isOwner() {
|
isOwner() {
|
||||||
return this.map.options.user?.id === this.map.options.permissions.owner?.id
|
return Boolean(this.map.options.user?.is_owner)
|
||||||
}
|
}
|
||||||
|
|
||||||
isAnonymousMap() {
|
isAnonymousMap() {
|
||||||
|
|
|
@ -1638,11 +1638,13 @@ U.Map = L.Map.extend({
|
||||||
},
|
},
|
||||||
|
|
||||||
del: async function () {
|
del: async function () {
|
||||||
if (confirm(L._('Are you sure you want to delete this map?'))) {
|
this.dialog
|
||||||
|
.confirm(L._('Are you sure you want to delete this map?'))
|
||||||
|
.then(async () => {
|
||||||
const url = this.urls.get('map_delete', { map_id: this.options.umap_id })
|
const url = this.urls.get('map_delete', { map_id: this.options.umap_id })
|
||||||
const [data, response, error] = await this.server.post(url)
|
const [data, response, error] = await this.server.post(url)
|
||||||
if (data.redirect) window.location = data.redirect
|
if (data.redirect) window.location = data.redirect
|
||||||
}
|
})
|
||||||
},
|
},
|
||||||
|
|
||||||
clone: async function () {
|
clone: async function () {
|
||||||
|
|
|
@ -219,3 +219,26 @@ def test_alert_message_after_create_show_link_even_without_mail(
|
||||||
).to_be_visible()
|
).to_be_visible()
|
||||||
expect(alert.get_by_role("button", name="Copy")).to_be_visible()
|
expect(alert.get_by_role("button", name="Copy")).to_be_visible()
|
||||||
expect(alert.get_by_role("button", name="Send me the link")).to_be_hidden()
|
expect(alert.get_by_role("button", name="Send me the link")).to_be_hidden()
|
||||||
|
|
||||||
|
|
||||||
|
def test_anonymous_owner_can_delete_the_map(anonymap, live_server, owner_session):
|
||||||
|
assert Map.objects.count() == 1
|
||||||
|
owner_session.goto(f"{live_server.url}{anonymap.get_absolute_url()}")
|
||||||
|
owner_session.get_by_role("button", name="Edit").click()
|
||||||
|
owner_session.get_by_role("link", name="Map advanced properties").click()
|
||||||
|
owner_session.get_by_text("Advanced actions").click()
|
||||||
|
expect(owner_session.get_by_role("button", name="Delete")).to_be_visible()
|
||||||
|
owner_session.get_by_role("button", name="Delete").click()
|
||||||
|
with owner_session.expect_response(re.compile(r".*/update/delete/.*")):
|
||||||
|
owner_session.get_by_role("button", name="OK").click()
|
||||||
|
assert not Map.objects.count()
|
||||||
|
|
||||||
|
|
||||||
|
def test_non_owner_cannot_see_delete_button(anonymap, live_server, page):
|
||||||
|
anonymap.edit_status = Map.ANONYMOUS
|
||||||
|
anonymap.save()
|
||||||
|
page.goto(f"{live_server.url}{anonymap.get_absolute_url()}")
|
||||||
|
page.get_by_role("button", name="Edit").click()
|
||||||
|
page.get_by_role("link", name="Map advanced properties").click()
|
||||||
|
page.get_by_text("Advanced actions").click()
|
||||||
|
expect(page.get_by_role("button", name="Delete")).to_be_hidden()
|
||||||
|
|
|
@ -134,17 +134,9 @@ def test_owner_has_delete_map_button(map, live_server, login):
|
||||||
advanced.click()
|
advanced.click()
|
||||||
delete = page.get_by_role("button", name="Delete", exact=True)
|
delete = page.get_by_role("button", name="Delete", exact=True)
|
||||||
expect(delete).to_be_visible()
|
expect(delete).to_be_visible()
|
||||||
dialog_shown = False
|
|
||||||
|
|
||||||
def handle_dialog(dialog):
|
|
||||||
dialog.accept()
|
|
||||||
nonlocal dialog_shown
|
|
||||||
dialog_shown = True
|
|
||||||
|
|
||||||
page.on("dialog", handle_dialog)
|
|
||||||
with page.expect_navigation():
|
|
||||||
delete.click()
|
delete.click()
|
||||||
assert dialog_shown
|
with page.expect_navigation():
|
||||||
|
page.get_by_role("button", name="OK").click()
|
||||||
assert Map.objects.all().count() == 0
|
assert Map.objects.all().count() == 0
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -458,12 +458,16 @@ def simple_json_response(**kwargs):
|
||||||
|
|
||||||
class SessionMixin:
|
class SessionMixin:
|
||||||
def get_user_data(self):
|
def get_user_data(self):
|
||||||
|
data = {}
|
||||||
|
if hasattr(self, "object"):
|
||||||
|
data["is_owner"] = self.object.is_owner(self.request.user, self.request)
|
||||||
if self.request.user.is_anonymous:
|
if self.request.user.is_anonymous:
|
||||||
return {}
|
return data
|
||||||
return {
|
return {
|
||||||
"id": self.request.user.pk,
|
"id": self.request.user.pk,
|
||||||
"name": str(self.request.user),
|
"name": str(self.request.user),
|
||||||
"url": reverse("user_dashboard"),
|
"url": reverse("user_dashboard"),
|
||||||
|
**data,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue