Domain isolation: replace cross-domain imports with service calls
All checks were successful
Build and Deploy / build-and-deploy (push) Successful in 50s
All checks were successful
Build and Deploy / build-and-deploy (push) Successful in 50s
Replace direct Calendar, MarketPlace, and Post model queries with typed service calls (services.blog, services.calendar, services.market, services.cart). Blog registers all 4 services via domain_services_fn with has() guards for composable deployment. Key changes: - app.py: use domain_services_fn instead of inline service registration - admin routes: MarketPlace queries → services.market.marketplaces_for_container() - entry_associations: CalendarEntryPost → services.calendar.entry_ids_for_content() - markets service: Post query → services.blog.get_post_by_id/slug() - posts_data, post routes: use calendar/market/cart services - menu_items: glue imports → shared imports Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -82,7 +82,7 @@ def register():
|
||||
pc = PageConfig(container_type="page", container_id=post_id, features={})
|
||||
g.s.add(pc)
|
||||
await g.s.flush()
|
||||
from glue.services.relationships import attach_child
|
||||
from shared.services.relationships import attach_child
|
||||
await attach_child(g.s, "page", post_id, "page_config", pc.id)
|
||||
|
||||
# Parse request body
|
||||
@@ -146,7 +146,7 @@ def register():
|
||||
pc = PageConfig(container_type="page", container_id=post_id, features={})
|
||||
g.s.add(pc)
|
||||
await g.s.flush()
|
||||
from glue.services.relationships import attach_child
|
||||
from shared.services.relationships import attach_child
|
||||
await attach_child(g.s, "page", post_id, "page_config", pc.id)
|
||||
|
||||
form = await request.form
|
||||
@@ -603,21 +603,14 @@ def register():
|
||||
@require_admin
|
||||
async def markets(slug: str):
|
||||
"""List markets for this page."""
|
||||
from shared.models.market_place import MarketPlace
|
||||
from sqlalchemy import select as sa_select
|
||||
from shared.services.registry import services
|
||||
|
||||
post = (g.post_data or {}).get("post", {})
|
||||
post_id = post.get("id")
|
||||
if not post_id:
|
||||
return await make_response("Post not found", 404)
|
||||
|
||||
page_markets = (await g.s.execute(
|
||||
sa_select(MarketPlace).where(
|
||||
MarketPlace.container_type == "page",
|
||||
MarketPlace.container_id == post_id,
|
||||
MarketPlace.deleted_at.is_(None),
|
||||
).order_by(MarketPlace.name)
|
||||
)).scalars().all()
|
||||
page_markets = await services.market.marketplaces_for_container(g.s, "page", post_id)
|
||||
|
||||
html = await render_template(
|
||||
"_types/post/admin/_markets_panel.html",
|
||||
@@ -631,8 +624,7 @@ def register():
|
||||
async def create_market(slug: str):
|
||||
"""Create a new market for this page."""
|
||||
from ..services.markets import create_market as _create_market, MarketError
|
||||
from shared.models.market_place import MarketPlace
|
||||
from sqlalchemy import select as sa_select
|
||||
from shared.services.registry import services
|
||||
from quart import jsonify
|
||||
|
||||
post = (g.post_data or {}).get("post", {})
|
||||
@@ -649,13 +641,7 @@ def register():
|
||||
return jsonify({"error": str(e)}), 400
|
||||
|
||||
# Return updated markets list
|
||||
page_markets = (await g.s.execute(
|
||||
sa_select(MarketPlace).where(
|
||||
MarketPlace.container_type == "page",
|
||||
MarketPlace.container_id == post_id,
|
||||
MarketPlace.deleted_at.is_(None),
|
||||
).order_by(MarketPlace.name)
|
||||
)).scalars().all()
|
||||
page_markets = await services.market.marketplaces_for_container(g.s, "page", post_id)
|
||||
|
||||
html = await render_template(
|
||||
"_types/post/admin/_markets_panel.html",
|
||||
@@ -669,8 +655,7 @@ def register():
|
||||
async def delete_market(slug: str, market_slug: str):
|
||||
"""Soft-delete a market."""
|
||||
from ..services.markets import soft_delete_market
|
||||
from shared.models.market_place import MarketPlace
|
||||
from sqlalchemy import select as sa_select
|
||||
from shared.services.registry import services
|
||||
from quart import jsonify
|
||||
|
||||
post = (g.post_data or {}).get("post", {})
|
||||
@@ -681,13 +666,7 @@ def register():
|
||||
return jsonify({"error": "Market not found"}), 404
|
||||
|
||||
# Return updated markets list
|
||||
page_markets = (await g.s.execute(
|
||||
sa_select(MarketPlace).where(
|
||||
MarketPlace.container_type == "page",
|
||||
MarketPlace.container_id == post_id,
|
||||
MarketPlace.deleted_at.is_(None),
|
||||
).order_by(MarketPlace.name)
|
||||
)).scalars().all()
|
||||
page_markets = await services.market.marketplaces_for_container(g.s, "page", post_id)
|
||||
|
||||
html = await render_template(
|
||||
"_types/post/admin/_markets_panel.html",
|
||||
|
||||
Reference in New Issue
Block a user