Introduces a widget system where domains register UI fragments into named slots (container_nav, container_card, account_page, account_link). Host apps iterate widgets generically without naming any domain. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
25 lines
755 B
Python
25 lines
755 B
Python
"""Market-domain widgets: marketplace links on container pages."""
|
|
from __future__ import annotations
|
|
|
|
from shared.contracts.widgets import NavWidget
|
|
from shared.services.widget_registry import widgets
|
|
from shared.services.registry import services
|
|
|
|
|
|
async def _nav_markets_context(
|
|
session, *, container_type, container_id, post_slug, **kw,
|
|
):
|
|
markets = await services.market.marketplaces_for_container(
|
|
session, container_type, container_id,
|
|
)
|
|
return {"markets": markets, "post_slug": post_slug}
|
|
|
|
|
|
def register_market_widgets() -> None:
|
|
widgets.add_container_nav(NavWidget(
|
|
domain="market",
|
|
order=30,
|
|
context_fn=_nav_markets_context,
|
|
template="_widgets/container_nav/market_links.html",
|
|
))
|