feat: decouple blog from shared_lib, add app-owned models

Phase 1-3 of decoupling:
- path_setup.py adds project root to sys.path
- Blog-owned models in blog/models/ (ghost_content, snippet, tag_group)
- Re-export shims for shared models (user, kv, magic_link, menu_item)
- All imports updated: shared.infrastructure, shared.db, shared.browser, etc.
- No more cross-app post_id FKs in calendar/market/page_config

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
giles
2026-02-11 12:46:31 +00:00
parent 5053448ee2
commit a01016d8d5
33 changed files with 550 additions and 106 deletions

14
app.py
View File

@@ -6,11 +6,11 @@ from quart import g, request
from jinja2 import FileSystemLoader, ChoiceLoader
from sqlalchemy import select
from shared.factory import create_base_app
from config import config
from models import KV
from shared.infrastructure.factory import create_base_app
from shared.config import config
from shared.models import KV
from suma_browser.app.bp import (
from bp import (
register_auth_bp,
register_blog_bp,
register_admin,
@@ -27,9 +27,9 @@ async def coop_context() -> dict:
- menu_items: direct DB query (coop owns this data)
- cart_count/cart_total: fetched from cart internal API
"""
from shared.context import base_context
from suma_browser.app.bp.menu_items.services.menu_items import get_all_menu_items
from shared.internal_api import get as api_get
from shared.infrastructure.context import base_context
from bp.menu_items.services.menu_items import get_all_menu_items
from shared.infrastructure.internal_api import get as api_get
ctx = await base_context()