view libervia/web/pages/events/_browser/__init__.py @ 1522:a44f77559279

installation: moved from `setup.py` to `pyproject.toml`: - following backend change, installation is now using `pyproject.toml`, and legacy `setup.py` as well as other legacy files have been deleted/updated. - [hatch](https://hatch.pypa.io) is now used as main building tool. However, thanks to the use of standards, other tools can be used too. - `VERSION` file has been deleted, in favor or using directly `__version__`, in `libervia/web/__init__.py`. Version can be updated directly from Hatch - update .hgignore - several dependencies version bump, with code update to adapt to changes.
author Goffi <goffi@goffi.org>
date Wed, 07 Jun 2023 15:28:10 +0200
parents eb00d593801d
children
line wrap: on
line source

from browser import DOMNode, document, aio
from javascript import JSON
from bridge import AsyncBridge as Bridge, BridgeException
import dialog

bridge = Bridge()


async def on_delete(evt):
    evt.stopPropagation()
    evt.preventDefault()
    target = evt.currentTarget
    item_elt = DOMNode(target.closest('.item'))
    item_elt.classList.add("selected_for_deletion")
    item = JSON.parse(item_elt.dataset.item)
    confirmed = await dialog.Confirm(
        f"Event {item['name']!r} will be deleted, are you sure?",
        ok_label="delete",
    ).ashow()

    if not confirmed:
        item_elt.classList.remove("selected_for_deletion")
        return

    try:
        await bridge.interest_retract("", item['interest_id'])
    except BridgeException as e:
        dialog.notification.show(
            f"Can't remove list {item['name']!r} from personal interests: {e}",
            "error"
        )
    else:
        print(f"{item['name']!r} removed successfuly from list of interests")
        item_elt.classList.add("state_deleted")
        item_elt.bind("transitionend", lambda evt: item_elt.remove())
        if item.get("creator", False):
            try:
                await bridge.ps_node_delete(
                    item['service'],
                    item['node'],
                )
            except BridgeException as e:
                dialog.notification.show(
                    f"Error while deleting {item['name']!r}: {e}",
                    "error"
                )
            else:
                dialog.notification.show(f"{item['name']!r} has been deleted")


for elt in document.select('.action_delete'):
    elt.bind("click", lambda evt: aio.run(on_delete(evt)))