Files
rose-ash/market/bp/market/routes.py
giles 293f7713d6
Some checks failed
Build and Deploy / build-and-deploy (push) Failing after 16s
Auto-mount defpages: eliminate Python route stubs across all 9 services
Defpages are now declared with absolute paths in .sx files and auto-mounted
directly on the Quart app, removing ~850 lines of blueprint mount_pages calls,
before_request hooks, and g.* wrapper boilerplate. A new page = one defpage
declaration, nothing else.

Infrastructure:
- async_eval awaits coroutine results from callable dispatch
- auto_mount_pages() mounts all registered defpages on the app
- g._defpage_ctx pattern passes helper data to layout context

Migrated: sx, account, orders, federation, cart, market, events, blog

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-03 19:03:15 +00:00

50 lines
1.0 KiB
Python

from __future__ import annotations
from quart import Blueprint, g, make_response, url_for
from ..browse.routes import register as register_browse_bp
from .filters.qs import makeqs_factory
from ..browse.services.nav import get_nav
from ..api.routes import products_api
from .admin.routes import register as register_admin
def register(url_prefix, title):
bp = Blueprint("market", __name__, url_prefix)
@bp.before_request
def route():
g.makeqs_factory = makeqs_factory
@bp.context_processor
async def inject_root():
market = getattr(g, "market", None)
market_id = market.id if market else None
post_data = getattr(g, "post_data", None) or {}
return {
**post_data,
"market_title": market.name if market else title,
"categories": (await get_nav(g.s, market_id=market_id))["cats"],
"qs": makeqs_factory()(),
"market": market,
}
bp.register_blueprint(
register_browse_bp(),
)
bp.register_blueprint(
products_api,
)
bp.register_blueprint(
register_admin(),
)
return bp