Some checks failed
Build and Deploy / build-and-deploy (push) Failing after 16s
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>
50 lines
1.0 KiB
Python
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
|
|
|