ColinMaudry / decp-table-schema-utils

Schéma CSV pour les Données Essentielles de la Commande Publique et scripts de conversion
0 stars 0 forks source link

Proposer un format tableur (ods ou xlsx) dans datasette #21

Closed ColinMaudry closed 3 years ago

ColinMaudry commented 3 years ago

Si certaines personnes sont à l'aise pour ouvrir un fichier CSV et passer l'étape de formatage (choix du séparateur et de l'encodage), elle peut être bloquante pour d'autres. Proposer les téléchargements dans un format tableur standard augmenterait sensiblement l'accès aux données.

Cela passerait par la création d'un plugin qui proposerait un nouveau format de téléchargement.

Le plugin pourrait s'appuyer sur

Après un rapide coup d'oeil je ne sais pas quel hook de datasette pourrait correspondre.

cc @taniki

ColinMaudry commented 3 years ago

En gros il faudrait pouvoir faire ce qui est fait pour le CSV, mais pour un autre format.

ColinMaudry commented 3 years ago

https://github.com/simonw/datasette/issues/782#issuecomment-706740250

Ici c'est du json, mais on voit qu'il ne serait pas trop compliqué de proposer du tabulaire.

from datasette import hookimpl
from datasette.utils.asgi import Response

@hookimpl
def register_output_renderer(datasette):
    return {
        "extension": "json-preview",
        "render": json_preview,
    }

def json_preview(data, columns, rows):
    next_url = data.get("next_url")
    headers = {}
    if next_url:
        headers["link"] = '<{}>; rel="next"'.format(next_url)
    return Response.json([dict(zip(columns, row)) for row in rows], headers=headers)
ColinMaudry commented 3 years ago

J'ai posté un issue sur datasette, car je bloque sur le type d'objet à retourner : https://github.com/simonw/datasette/issues/1310

ColinMaudry commented 3 years ago

Eureka 💡

@taniki si tu cherches à produire du Excel depuis datasette :) ==> https://github.com/simonw/datasette/issues/1310#issuecomment-829885904