Añade un conjunto amplio de funciones al paquete python/functions/metabase: - Nuevos modulos: collections.py, documents.py, maintenance.py, permissions.py, validation.py (+ test). - Ampliacion de cards.py, dashboards.py, client.py e __init__.py para exponer las nuevas operaciones. - Funciones de documentos (create/get/update/delete/archive/copy/move + comentarios), grupos y memberships, permission/collection graphs, copy/move de cards y dashboards, validacion de MBQL/SQL y payloads, actualizacion segura de dashboards y fix_null_ratio. - .md por funcion con frontmatter para que fn index los registre. - Actualiza pyproject.toml y uv.lock con las dependencias resultantes. Impacto: ampliamente mas cobertura de la API de Metabase desde el registry, reutilizable por apps y analisis. No toca Go ni frontend.
3.0 KiB
name, kind, lang, domain, version, purity, signature, description, tags, uses_functions, uses_types, returns, returns_optional, error_type, imports, params, output, tested, tests, test_file_path, file_path
| name | kind | lang | domain | version | purity | signature | description | tags | uses_functions | uses_types | returns | returns_optional | error_type | imports | params | output | tested | tests | test_file_path | file_path | ||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| metabase_create_dashboard_raw | function | py | infra | 1.0.0 | impure | def metabase_create_dashboard_raw(client: MetabaseClient, payload: dict) -> dict | Crea un dashboard en Metabase enviando el payload completo sin modificaciones. Maneja automaticamente la limitacion de la API que no acepta dashcards en el POST inicial: si el payload contiene dashcards, hace POST para crear el dashboard y luego PUT para añadir las cards. Endpoint: POST /api/dashboard (+ PUT condicional). |
|
|
false | error_go_core |
|
|
dict: objeto dashboard creado; si habia dashcards en el payload, retorna la respuesta del PUT final con el campo dashcards poblado; si no habia dashcards, retorna la respuesta del POST inicial | false | python/functions/metabase/dashboards.py |
Ejemplo
# Sin dashcards (solo POST)
dash = metabase_create_dashboard_raw(client, {
"name": "Sales Overview",
"description": "KPIs de ventas mensuales",
"collection_id": 5,
"parameters": [],
})
print(dash["id"])
# Con dashcards (POST + PUT automatico)
dash = metabase_create_dashboard_raw(client, {
"name": "Sales Overview",
"description": "KPIs de ventas mensuales",
"collection_id": 5,
"parameters": [],
"dashcards": [
{
"id": -1,
"card_id": 42,
"size_x": 6,
"size_y": 4,
"col": 0,
"row": 0,
"visualization_settings": {},
"parameter_mappings": [],
},
],
})
print(dash["id"])
print(len(dash["dashcards"])) # 1
Notas
No se escriben tests automaticos porque requiere una instancia real de Metabase.
Los intentos de mockear client.request quedan fuera del alcance del registry
por ahora — la validacion se hace en integracion contra un entorno Metabase real.
La API de Metabase (al menos hasta v0.49) ignora el campo dashcards en el
POST inicial de creacion de dashboard. Esta funcion absorbe esa limitacion
internamente: extrae las dashcards del payload antes del POST y las envia en
un PUT separado usando el id que Metabase asigno al nuevo dashboard.
Si Metabase devuelve 4xx/5xx en cualquier paso, httpx lanza HTTPStatusError
sin capturar. Si el POST tiene exito pero el PUT falla, el dashboard queda
creado pero vacio — el caller debe manejar este caso si necesita atomicidad.