Decouple blog: use shared.models for all cross-app imports
All checks were successful
Build and Deploy / build-and-deploy (push) Successful in 47s

- Replace all imports from cart.models, market.models, events.models
  with shared.models equivalents
- Convert blog/models/ghost_content.py to re-export stub
- Update shared + glue submodule pointers

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
giles
2026-02-18 20:57:56 +00:00
parent 1ea2950310
commit c537770172
10 changed files with 21 additions and 234 deletions

View File

@@ -13,7 +13,7 @@ from sqlalchemy.orm.attributes import flag_modified # for non-Mutable JSON colu
from models.ghost_content import (
Post, Author, Tag, PostAuthor, PostTag
)
from cart.models.page_config import PageConfig
from shared.models.page_config import PageConfig
# User-centric membership models
from shared.models import User

View File

@@ -6,7 +6,7 @@ from sqlalchemy.ext.asyncio import AsyncSession
from sqlalchemy.orm import selectinload, joinedload
from models.ghost_content import Post, Author, Tag, PostTag
from cart.models.page_config import PageConfig
from shared.models.page_config import PageConfig
from models.tag_group import TagGroup, TagGroupTag

View File

@@ -1,7 +1,7 @@
from ..ghost_db import DBClient # adjust import path
from sqlalchemy import select
from models.ghost_content import PostLike
from events.models.calendars import CalendarEntry, CalendarEntryPost
from shared.models.calendars import CalendarEntry, CalendarEntryPost
from quart import g
async def posts_data(

View File

@@ -22,7 +22,7 @@ def register():
@require_admin
async def admin(slug: str):
from shared.browser.app.utils.htmx import is_htmx_request
from cart.models.page_config import PageConfig
from shared.models.page_config import PageConfig
from sqlalchemy import select as sa_select
# Load features for page admin
@@ -62,7 +62,7 @@ def register():
@require_admin
async def update_features(slug: str):
"""Update PageConfig.features for a page."""
from cart.models.page_config import PageConfig
from shared.models.page_config import PageConfig
from models.ghost_content import Post
from sqlalchemy import select as sa_select
from quart import jsonify
@@ -129,7 +129,7 @@ def register():
@require_admin
async def update_sumup(slug: str):
"""Update PageConfig SumUp credentials for a page."""
from cart.models.page_config import PageConfig
from shared.models.page_config import PageConfig
from sqlalchemy import select as sa_select
from quart import jsonify
@@ -191,7 +191,7 @@ def register():
@require_admin
async def calendar_view(slug: str, calendar_id: int):
"""Show calendar month view for browsing entries"""
from events.models.calendars import Calendar
from shared.models.calendars import Calendar
from sqlalchemy import select
from datetime import datetime, timezone
from quart import request
@@ -273,7 +273,7 @@ def register():
@require_admin
async def entries(slug: str):
from ..services.entry_associations import get_post_entry_ids
from events.models.calendars import Calendar
from shared.models.calendars import Calendar
from sqlalchemy import select
post_id = g.post_data["post"]["id"]
@@ -309,7 +309,7 @@ def register():
@require_admin
async def toggle_entry(slug: str, entry_id: int):
from ..services.entry_associations import toggle_entry_association, get_post_entry_ids, get_associated_entries
from events.models.calendars import Calendar
from shared.models.calendars import Calendar
from sqlalchemy import select
from quart import jsonify
@@ -603,7 +603,7 @@ def register():
@require_admin
async def markets(slug: str):
"""List markets for this page."""
from market.models.market_place import MarketPlace
from shared.models.market_place import MarketPlace
from sqlalchemy import select as sa_select
post = (g.post_data or {}).get("post", {})
@@ -631,7 +631,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 market.models.market_place import MarketPlace
from shared.models.market_place import MarketPlace
from sqlalchemy import select as sa_select
from quart import jsonify
@@ -669,7 +669,7 @@ def register():
async def delete_market(slug: str, market_slug: str):
"""Soft-delete a market."""
from ..services.markets import soft_delete_market
from market.models.market_place import MarketPlace
from shared.models.market_place import MarketPlace
from sqlalchemy import select as sa_select
from quart import jsonify

View File

@@ -11,8 +11,8 @@ from quart import (
)
from .services.post_data import post_data
from .services.post_operations import toggle_post_like
from events.models.calendars import Calendar
from market.models.market_place import MarketPlace
from shared.models.calendars import Calendar
from shared.models.market_place import MarketPlace
from sqlalchemy import select
from shared.browser.app.redis_cacher import cache_page, clear_cache

View File

@@ -4,7 +4,7 @@ from sqlalchemy.ext.asyncio import AsyncSession
from sqlalchemy import select
from sqlalchemy.sql import func
from events.models.calendars import CalendarEntry, CalendarEntryPost, Calendar
from shared.models.calendars import CalendarEntry, CalendarEntryPost, Calendar
from models.ghost_content import Post

View File

@@ -6,9 +6,9 @@ import unicodedata
from sqlalchemy import select
from sqlalchemy.ext.asyncio import AsyncSession
from market.models.market_place import MarketPlace
from shared.models.market_place import MarketPlace
from models.ghost_content import Post
from cart.models.page_config import PageConfig
from shared.models.page_config import PageConfig
from shared.browser.app.utils import utcnow
from glue.services.relationships import attach_child, detach_child