Files
flowdeck/app/routers/collections/__init__.py
T
bruno adf56a2dd8
FlowDeck CI / docker (push) Successful in 1m54s
FlowDeck CI / lint (push) Successful in 1m55s
FlowDeck CI / test (push) Successful in 15m28s
refactor: A28 lot 3 — collections.py (2 622 L) → package 13 fichiers (v7.31.0)
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
2026-10-02 08:16:03 -04:00

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",
]