Projet

Général

Profil

Development #25385

Préremplissage d'un champs fichier depuis un webservice externe

Ajouté par Mikaël Ates il y a plus de 5 ans. Mis à jour il y a 4 jours.

Statut:
Solution validée
Priorité:
Normal
Assigné à:
Version cible:
-
Début:
19 juillet 2018
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Non
Planning:
Non

Description

Une source comme https://doc.entreprise.api.gouv.fr/#documents-association permet par exemple d'obtenir via WS les statuts d'une association.

Sur un formulaire, il serait intéressant de :
  • pouvoir préremplir avec ce document un champs fichier,
  • permettre à l'usager de visualiser le document,
  • permettre à l'usager d'en uploader un autre si celui prérempli ne convenait pas.

Historique

#2

Mis à jour par Frédéric Péters il y a plus de 5 ans

Avant ça Passerelle fournirait un endpoint qui répondrait avec le fichier ? Et donc ici le sujet serait à prendre comme "depuis une URL" plutôt que "webservice" ?

#3

Mis à jour par Benjamin Dauvergne il y a plus de 5 ans

Tu pourras décider de ce qui te parait le plus simple mais j'explique le cas d'usage ce sera peut-être plus clair: on voudrait attaquer un endpoint1 de API entreprise qui renvoie une liste de documents avec leur URL:

{
     "nombre_documents":  3,
     "documents":  [
         {
             "type":  "Statuts",
             "url":  "https://apientreprise.fr/attestations/40ab0b07d434d0417e8997ce7c5afbef/attestation_document_association.pdf" 
             "timestamp": "1500660325" 
    }, ...
  ]
}
Je ne sais absolument pas si cette URL est publique où nécessite la même authentification que le endpoint, il n'y aucune doc sur la sémantique du retour (j'ai juste la syntaxe). Donc dans l'absolu on va supposer que passerelle devra récupérer le fichier, à partir de là on peut imaginer plusieurs piste:
  • les documents sont bien rangés, on a toujours qu'un document statut donc on peut passer directement au endpoint un paramètre type=Statut donc au pire on a qu'un fichier à récupérer
  • on peut imaginer que passerelle mette en cache ces documents qui varient peu, indexé par le numéro RNA de l'association,
  • si c'est qu'un fichier on peut le retourner tel quel sans décoration JSON autour/base64 et donc prévoir des webservices "fichiers" qui retournent le résultat sous forme de Upload (de la même manière l'action de workflow WsCall sait gérer les attachements) et dans ce cas on peut faire un prefill juste avec webservice.api_entreprise_statuts_association en prévoyant de faire un session.add_temp_file() dans le cas d'un champs fichier (l'idée est là pas sûr de l'ordre),
  • sinon on peut aussi avoir une fonction to_upload() qui sait manger du {'filename': ..., 'content': ...} et mettre une expression de prefill de la forme
    to_upload(webservice.api_entreprise_documents_association.get('Statuts'))
    , pareil get_session().add_tempfile() etc..

1 https://doc.entreprise.api.gouv.fr/#documents-association

#4

Mis à jour par Frédéric Péters il y a plus de 5 ans

si c'est qu'un fichier ...
sinon on peut aussi ...

Si c'est juste un fichier accessible directement on peut imaginer que le préremplissage accepte une chaine, qui serait une URL, et on mettrait dans ce cas précis une expression, genre webservice.api_association.documents0.url. Si c'est autre chose, il faut passer par la médiation de passerelle pour en revenir au cas de l'URL. En parallèle du préremplissage par une URL, on pourrait imaginer le préremplissage aussi fonctionner en recevant une structure python, genre {"mimetype": ..., "b64_content": ..., "filename": ...} mais je ne vois pas le gain ici.

#5

Mis à jour par Benjamin Dauvergne il y a plus de 5 ans

Frédéric Péters a écrit :

si c'est qu'un fichier ...
sinon on peut aussi ...

Si c'est juste un fichier accessible directement on peut imaginer que le préremplissage accepte une chaine, qui serait une URL, et on mettrait dans ce cas précis une expression, genre webservice.api_association.documents0.url. Si c'est autre chose, il faut passer par la médiation de passerelle pour en revenir au cas de l'URL. En parallèle du préremplissage par une URL, on pourrait imaginer le préremplissage aussi fonctionner en recevant une structure python, genre {"mimetype": ..., "b64_content": ..., "filename": ...} mais je ne vois pas le gain ici.

Ok, on verra.

#6

Mis à jour par Brice Mallet il y a plus de 5 ans

Benjamin Dauvergne a écrit :

(...) on voudrait attaquer un endpoint1 de API entreprise qui renvoie une liste de documents avec leur URL

Rq : cette API entreprise délivre 2 services relatifs aux association : "Associations RNA" et "Documents Association"
mais il existe également une API Association (https://www.associations.gouv.fr/l-api-association.html) pour laquelle nous avons commande, par Arles, de réaliser un connecteur pour octobre (#24125). Dans le cas d'Arles, il est souhaité récupérer "derniers statuts de l'association", "récépissé de déclaration (création)" et "extrait K-bis datant de moins de 3 mois pour les autres structures juridiques".

#8

Mis à jour par Robot Gitea il y a 7 jours

  • Statut changé de Nouveau à En cours
  • Assigné à mis à Frédéric Péters

Frédéric Péters (fpeters) a ouvert une pull request sur Gitea concernant cette demande :

#9

Mis à jour par Robot Gitea il y a 7 jours

  • Statut changé de En cours à Solution proposée
#10

Mis à jour par Robot Gitea il y a 4 jours

  • Statut changé de Solution proposée à Solution validée

Lauréline Guérin (lguerin) a approuvé une pull request sur Gitea concernant cette demande :

Formats disponibles : Atom PDF