Auto-mount defpages: eliminate Python route stubs across all 9 services
Some checks failed
Build and Deploy / build-and-deploy (push) Failing after 16s
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>
This commit is contained in:
@@ -103,21 +103,16 @@ def create_app() -> "Quart":
|
||||
from sxc.pages import setup_market_pages
|
||||
setup_market_pages()
|
||||
|
||||
from shared.sx.pages import mount_pages
|
||||
|
||||
# All markets: / — global view across all pages
|
||||
all_markets_bp = register_all_markets()
|
||||
mount_pages(all_markets_bp, "market", names=["all-markets-index"])
|
||||
app.register_blueprint(all_markets_bp, url_prefix="/")
|
||||
|
||||
# Page markets: /<slug>/ — markets for a single page
|
||||
page_markets_bp = register_page_markets()
|
||||
mount_pages(page_markets_bp, "market", names=["page-markets-index"])
|
||||
app.register_blueprint(page_markets_bp, url_prefix="/<slug>")
|
||||
|
||||
# Page admin: /<slug>/admin/ — post-level admin for markets
|
||||
page_admin_bp = register_page_admin()
|
||||
mount_pages(page_admin_bp, "market", names=["page-admin"])
|
||||
app.register_blueprint(page_admin_bp, url_prefix="/<slug>/admin")
|
||||
|
||||
# Market blueprint nested under post slug: /<page_slug>/<market_slug>/
|
||||
@@ -135,6 +130,10 @@ def create_app() -> "Quart":
|
||||
app.register_blueprint(register_actions())
|
||||
app.register_blueprint(register_data())
|
||||
|
||||
# Auto-mount all defpages with absolute paths
|
||||
from shared.sx.pages import auto_mount_pages
|
||||
auto_mount_pages(app, "market")
|
||||
|
||||
# --- Auto-inject slugs into url_for() calls ---
|
||||
@app.url_value_preprocessor
|
||||
def pull_slugs(endpoint, values):
|
||||
|
||||
Reference in New Issue
Block a user