Découpe par concern de l'ancien app/routers/collections.py (2 622 lignes, 53 endpoints / 52 fonctions) en package `app/routers/collections/` : - 10 modules de routes : crud 337 L (6 r.), properties 322 (8), linked 286 (7), structure 267 (8), dashboard_views 214 (3), meta 197 (5), views 187 (6), pages 184 (4), data_api 122 (2), boards 61 (3) - _common.py (220 L) : 8 helpers auth/permissions/validation - _renderers.py (667 L) : 15 rendus HTML des vues + CHART_MAX_GROUPS - __init__.py : ré-exports connus (_validate_page_properties pour automations ; _chart_values/_chart_aggregate/_fmt_number/_render_chart pour les tests) + __all__ Preuve contractuelle : docs/openapi-v2.json régénéré = IDENTIQUE byte-à-byte (509 chemins, ordre préservé). Pièges rattrapés : - docstring d'origine conservée dans le header copié → F404 (from __future__ après un statement) → slice [1:30] - décorateurs empilés (view_collection ×2) : segment sans def → skip du 2e décorateur (53 endpoints = 52 unités) - CHART_MAX_GROUPS hors détection des helpers (F821) → import ._renderers - test_csp_no_cdn_and_vendor lisait collections.py → balayage du package Reste A28 : board.py 2 101 L (lot 4). suite **1091/1091** · ruff OK · OpenAPI 509 identique · docs à jour
59 lines
1.2 KiB
Python
59 lines
1.2 KiB
Python
"""FlowDeck — Collections : bases de données façon Notion.
|
|
|
|
Découpe A28 : l'ancien `collections.py` (2 622 lignes, 53 routes) est
|
|
devenu ce package — un module par concern, helpers dans `_common`
|
|
(auth/permissions/validation) et `_renderers` (rendus HTML des vues).
|
|
Ré-exports : automations importe `_validate_page_properties`, les
|
|
tests importent les helpers de graphes.
|
|
"""
|
|
from __future__ import annotations
|
|
|
|
import logging
|
|
|
|
from fastapi import APIRouter
|
|
|
|
from . import ( # ordre = ordre d'enregistrement d'origine
|
|
boards,
|
|
crud,
|
|
dashboard_views,
|
|
data_api,
|
|
linked,
|
|
meta,
|
|
pages,
|
|
properties,
|
|
structure,
|
|
views,
|
|
)
|
|
from ._common import _validate_page_properties # noqa: F401
|
|
from ._renderers import ( # noqa: F401 — ré-exports tests
|
|
_chart_aggregate,
|
|
_chart_values,
|
|
_fmt_number,
|
|
_render_chart,
|
|
)
|
|
|
|
logger = logging.getLogger(__name__)
|
|
router = APIRouter()
|
|
for _mod in (
|
|
crud,
|
|
pages,
|
|
boards,
|
|
meta,
|
|
properties,
|
|
views,
|
|
structure,
|
|
linked,
|
|
dashboard_views,
|
|
data_api,
|
|
):
|
|
router.include_router(_mod.router)
|
|
|
|
__all__ = [
|
|
"router",
|
|
"_chart_aggregate",
|
|
"_chart_values",
|
|
"_fmt_number",
|
|
"_render_chart",
|
|
"_validate_page_properties",
|
|
]
|