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:
@@ -21,17 +21,17 @@ from ..blog.ghost.ghost_sync import (
|
||||
sync_member_to_ghost,
|
||||
)
|
||||
|
||||
from db.session import get_session
|
||||
from models import User, MagicLink, UserNewsletter
|
||||
from models.ghost_membership_entities import GhostNewsletter
|
||||
from config import config
|
||||
from utils import host_url
|
||||
from shared.urls import coop_url
|
||||
from shared.db.session import get_session
|
||||
from shared.models import User, MagicLink, UserNewsletter
|
||||
from shared.models.ghost_membership_entities import GhostNewsletter
|
||||
from shared.config import config
|
||||
from shared.utils import host_url
|
||||
from shared.infrastructure.urls import coop_url
|
||||
|
||||
from sqlalchemy.orm import selectinload
|
||||
from suma_browser.app.redis_cacher import clear_cache
|
||||
from shared.cart_identity import current_cart_identity
|
||||
from shared.internal_api import post as api_post
|
||||
from shared.browser.app.redis_cacher import clear_cache
|
||||
from shared.infrastructure.cart_identity import current_cart_identity
|
||||
from shared.infrastructure.internal_api import post as api_post
|
||||
from .services import pop_login_redirect_target, store_login_redirect_target
|
||||
from .services.auth_operations import (
|
||||
get_app_host,
|
||||
@@ -84,7 +84,7 @@ def register(url_prefix="/auth"):
|
||||
|
||||
@auth_bp.get("/account/")
|
||||
async def account():
|
||||
from suma_browser.app.utils.htmx import is_htmx_request
|
||||
from shared.browser.app.utils.htmx import is_htmx_request
|
||||
|
||||
if not g.get("user"):
|
||||
return redirect(host_url(url_for("auth.login_form")))
|
||||
@@ -104,7 +104,7 @@ def register(url_prefix="/auth"):
|
||||
|
||||
@auth_bp.get("/newsletters/")
|
||||
async def newsletters():
|
||||
from suma_browser.app.utils.htmx import is_htmx_request
|
||||
from shared.browser.app.utils.htmx import is_htmx_request
|
||||
|
||||
if not g.get("user"):
|
||||
return redirect(host_url(url_for("auth.login_form")))
|
||||
|
||||
@@ -10,8 +10,8 @@ from sqlalchemy import select
|
||||
from sqlalchemy.ext.asyncio import AsyncSession
|
||||
from sqlalchemy.orm import selectinload
|
||||
|
||||
from models import User, MagicLink, UserNewsletter
|
||||
from config import config
|
||||
from shared.models import User, MagicLink, UserNewsletter
|
||||
from shared.config import config
|
||||
|
||||
|
||||
def get_app_host() -> str:
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
from urllib.parse import urlparse
|
||||
from quart import session
|
||||
|
||||
from shared.urls import coop_url
|
||||
from shared.infrastructure.urls import coop_url
|
||||
|
||||
|
||||
LOGIN_REDIRECT_SESSION_KEY = "login_redirect_to"
|
||||
|
||||
Reference in New Issue
Block a user