https://dev.entrouvert.org/https://dev.entrouvert.org/favicon.ico?15861920342019-05-15T05:17:02ZRedmine Entr’ouvertPasserelle - Development #33099: developper le connecteur Kimocehttps://dev.entrouvert.org/issues/33099?journal_id=1730982019-05-15T05:17:02ZFrédéric Pétersfpeters@entrouvert.com
<ul></ul><p>Dont l'objectif est ?</p> Passerelle - Development #33099: developper le connecteur Kimocehttps://dev.entrouvert.org/issues/33099?journal_id=1730992019-05-15T05:35:00ZSerghei Mihai
<ul></ul><p>Le but est de remonter les demandes de signalement de propreté dans Kimoce.<br />L'API expose des réferentiels des categories, types et sous-types de signalement, ainsi que la liste des voies qui pourrait être utilisée dans le formulaire pour l'aide à la saisie de l'adresse.<br />Avec ces informations on crée une demande dans Kimoce.<br />L'authentification auprès de l'API se fait par login/mot de passe qui delivre un jeton utilisé en authentification "Bearer": <a class="external" href="https://github.com/lexik/LexikJWTAuthenticationBundle/blob/master/Resources/doc/index.md#usage">https://github.com/lexik/LexikJWTAuthenticationBundle/blob/master/Resources/doc/index.md#usage</a></p>
<p>Après le traitement et la cloture de la demande Kimoce viendra notifier wcs de l'avancement via un appel à trigger.</p> Passerelle - Development #33099: developper le connecteur Kimocehttps://dev.entrouvert.org/issues/33099?journal_id=1731792019-05-15T14:21:50ZSerghei Mihai
<ul><li><strong>Fichier</strong> <a href="/attachments/34327">0001-lille_kimoce-initial-connector-33099.patch</a> <a class="icon-only icon-download" title="Télécharger" href="/attachments/download/34327/0001-lille_kimoce-initial-connector-33099.patch">0001-lille_kimoce-initial-connector-33099.patch</a> ajouté</li><li><strong>Statut</strong> changé de <i>Nouveau</i> à <i>Solution proposée</i></li><li><strong>Patch proposed</strong> changé de <i>Non</i> à <i>Oui</i></li></ul> Passerelle - Development #33099: developper le connecteur Kimocehttps://dev.entrouvert.org/issues/33099?journal_id=1731832019-05-15T14:25:26ZSerghei Mihai
<ul></ul><p>Code écrit pendant le 2 jours de sprint, testé avec l'API dévéloppée par dessus de Kimoce.</p> Passerelle - Development #33099: developper le connecteur Kimocehttps://dev.entrouvert.org/issues/33099?journal_id=1739232019-05-20T09:36:04ZThomas Noël
<ul></ul><p>Pose self.check_status plutôt au début du modèle qu'au milieu des endpoint normaux (genre juste après get_token). Mais surtout j'avoue ne pas comprendre comment il va marcher : le get sur les catégories nécessite un token. À mon avis tu devrais limiter le check_status à l'obtention du token.</p>
<p>J'ai cru que self.request permettait de faire n'importe quelle requête, mais non, c'est juste pour attraper certaines listes et donc je l'appelerais plutôt self.get_list ou self.referential</p>
<p>Détail, mais ça serait bien de documenter l'affaire : picture1 et picture2, quels content_type sont possibles ? Aussi, on aura à utiliser cela dans wcs (on n'y a pas de possibilité d'envoyer du base64 uniquement), le serialiseur de fichiers envoie plutôt un dictionnaire avec filename/content_type/base64.</p>
<p>Pour les listes, tu pourrais implémenter ?q et ?id afin de rendre l'autocomplétion directement fonctionnelle.</p>
<p>Sur la création d'une demande, tu devrais renvoyer aussi le contenu de la réponse (en retirant ou réduisant quand même pictures parce que ça va bouffer de la place). Ca permettra de simplifier le support, de voir ce que le Kimoce a répondu.</p>
<p>Dans les tests, tu pourrais réduire la taille des exemples :) Mais aussi supprimer des trucs comme "<a class="email" href="mailto:adrien.millot@smile.fr">adrien.millot@smile.fr</a>" parce que bon.</p>
<p>Voili voilà.</p> Passerelle - Development #33099: developper le connecteur Kimocehttps://dev.entrouvert.org/issues/33099?journal_id=1739262019-05-20T09:37:59ZThomas Noël
<ul></ul><p>Aussi, comme a dit Frédéric, utiliser le six de Django (si le urljoin de Django ne fait pas l'affaire, d'ailleurs ?). Et virer le import six qui ne sert à rien dans les tests.</p> Passerelle - Development #33099: developper le connecteur Kimocehttps://dev.entrouvert.org/issues/33099?journal_id=1740882019-05-20T17:36:15ZSerghei Mihai
<ul><li><strong>Fichier</strong> <a href="/attachments/34476">0001-lille_kimoce-initial-connector-33099.patch</a> <a class="icon-only icon-download" title="Télécharger" href="/attachments/download/34476/0001-lille_kimoce-initial-connector-33099.patch">0001-lille_kimoce-initial-connector-33099.patch</a> ajouté</li></ul><p>Thomas Noël a écrit :</p>
<blockquote>
<p>Pose self.check_status plutôt au début du modèle qu'au milieu des endpoint normaux (genre juste après get_token). Mais surtout j'avoue ne pas comprendre comment il va marcher : le get sur les catégories nécessite un token. À mon avis tu devrais limiter le check_status à l'obtention du token.</p>
</blockquote>
<blockquote>
<p>J'ai cru que self.request permettait de faire n'importe quelle requête, mais non, c'est juste pour attraper certaines listes et donc je l'appelerais plutôt self.get_list ou self.referential</p>
</blockquote>
<p>Yep.</p>
<blockquote>
<p>Détail, mais ça serait bien de documenter l'affaire : picture1 et picture2, quels content_type sont possibles ? Aussi, on aura à utiliser cela dans wcs (on n'y a pas de possibilité d'envoyer du base64 uniquement), le serialiseur de fichiers envoie plutôt un dictionnaire avec filename/content_type/base64.</p>
</blockquote>
<p>L'api en face attend des photos, encodées en base64, sans content-type, sans nom car elle convertit le contenu en JPG et nomme les fichiers de son côté, d'après ses règles.</p>
<blockquote>
<p>Pour les listes, tu pourrais implémenter ?q et ?id afin de rendre l'autocomplétion directement fonctionnelle.</p>
</blockquote>
<p>Oui, fait.</p>
<blockquote>
<p>Sur la création d'une demande, tu devrais renvoyer aussi le contenu de la réponse (en retirant ou réduisant quand même pictures parce que ça va bouffer de la place). Ca permettra de simplifier le support, de voir ce que le Kimoce a répondu.</p>
</blockquote>
<p>Ok, mais en fait en retour le WS renvoie les noms des images créées, qui ne nous sert pas, et non leur contenu.</p> Passerelle - Development #33099: developper le connecteur Kimocehttps://dev.entrouvert.org/issues/33099?journal_id=1741732019-05-21T08:05:59ZThomas Noël
<ul></ul><p>Serghei Mihai a écrit :</p>
<blockquote>
<p>L'api en face attend des photos, encodées en base64, sans content-type, sans nom car elle convertit le contenu en JPG et nomme les fichiers de son côté, d'après ses règles.</p>
</blockquote>
<p>Mais en fait je me demande comment tu vas envoyer du base64 là dedans...?</p>
<blockquote><blockquote>
<p>Sur la création d'une demande, tu devrais renvoyer aussi le contenu de la réponse (en retirant ou réduisant quand même pictures parce que ça va bouffer de la place). Ca permettra de simplifier le support, de voir ce que le Kimoce a répondu.</p>
</blockquote>
<p>Ok, mais en fait en retour le WS renvoie les noms des images créées, qui ne nous sert pas, et non leur contenu.</p>
</blockquote>
<p>Impec.</p>
<p>J'avais raté le passerelle/utils/http_authenticators.py : en faire un premier patch séparé stp.</p>
<p>Aussi, un truc, le response.ok c'est assez large comme vérification, ça répond aussi ok pour un 302 par exemple. Faudrait pas plutôt tester que c'est un 2xx voire même 200 ?</p> Passerelle - Development #33099: developper le connecteur Kimocehttps://dev.entrouvert.org/issues/33099?journal_id=1742352019-05-21T08:33:58ZSerghei Mihai
<ul><li><strong>Fichier</strong> <a href="/attachments/34488">0002-lille_kimoce-initial-connector-33099.patch</a> <a class="icon-only icon-download" title="Télécharger" href="/attachments/download/34488/0002-lille_kimoce-initial-connector-33099.patch">0002-lille_kimoce-initial-connector-33099.patch</a> ajouté</li><li><strong>Fichier</strong> <a href="/attachments/34487">0001-utils-add-simple-HTTP-Bearer-authentication-class.patch</a> <a class="icon-only icon-download" title="Télécharger" href="/attachments/download/34487/0001-utils-add-simple-HTTP-Bearer-authentication-class.patch">0001-utils-add-simple-HTTP-Bearer-authentication-class.patch</a> ajouté</li></ul><p>Thomas Noël a écrit :</p>
<blockquote>
<p>Mais en fait je me demande comment tu vas envoyer du base64 là dedans...?</p>
</blockquote>
<p>Dans l'appel WS par wcs on fait comme d'habitude: <code>form_var_fichier_raw</code> qui sera sérialisé en dico avec <code>filename</code>, <code>content</code> et <code>content-type</code>. Et le connecteur ne prend que le <code>content</code>.</p>
<blockquote>
<p>J'avais raté le passerelle/utils/http_authenticators.py : en faire un premier patch séparé stp.</p>
</blockquote>
<p>Ok.</p>
<blockquote>
<p>Aussi, un truc, le response.ok c'est assez large comme vérification, ça répond aussi ok pour un 302 par exemple. Faudrait pas plutôt tester que c'est un 2xx voire même 200 ?</p>
</blockquote>
<p>Lors de la création d'une demande l'API en face renvoie une HTTP 201. Pas de 302 rencontrée lors des tests.</p> Passerelle - Development #33099: developper le connecteur Kimocehttps://dev.entrouvert.org/issues/33099?journal_id=1742472019-05-21T08:52:35ZThomas Noël
<ul></ul><p>Serghei Mihai a écrit :</p>
<blockquote>
<p>Thomas Noël a écrit :</p>
<blockquote>
<p>Mais en fait je me demande comment tu vas envoyer du base64 là dedans...?</p>
</blockquote>
<p>Dans l'appel WS par wcs on fait comme d'habitude: <code>form_var_fichier_raw</code> qui sera sérialisé en dico avec <code>filename</code>, <code>content</code> et <code>content-type</code>. Et le connecteur ne prend que le <code>content</code>.</p>
</blockquote>
<p>Rah, my bad, je viens de mieux relire et voir le « post_data[param_name]['content'] ». Je pensais qu'on pouvait décrire le truc dans le schéma JSON ?</p>
<p>Si on peut pas, il faut renforcer un peu le check, parce que ça va facilement plantouiller :</p>
<pre>
if post_data.get(param_name) and isinstance(post_data['param_name'], dict) and post_data['param_name'].get('content'):
payload['pictures'].append({'content': post_data[param_name]['content']})
</pre>
<blockquote><blockquote>
<p>Aussi, un truc, le response.ok c'est assez large comme vérification, ça répond aussi ok pour un 302 par exemple. Faudrait pas plutôt tester que c'est un 2xx voire même 200 ?</p>
</blockquote>
<p>Lors de la création d'une demande l'API en face renvoie une HTTP 201. Pas de 302 rencontrée lors des tests.</p>
</blockquote>
<p>Donc c'est bien <code>status_code // 100 == 2</code> qu'il faut tester (ie les 3xx sont un échec). Mais bon c'est un détail.</p> Passerelle - Development #33099: developper le connecteur Kimocehttps://dev.entrouvert.org/issues/33099?journal_id=1742692019-05-21T09:48:21ZSerghei Mihai
<ul><li><strong>Fichier</strong> <a href="/attachments/34490">0001-lille_kimoce-initial-connector-33099.patch</a> <a class="icon-only icon-download" title="Télécharger" href="/attachments/download/34490/0001-lille_kimoce-initial-connector-33099.patch">0001-lille_kimoce-initial-connector-33099.patch</a> ajouté</li></ul><p>Thomas Noël a écrit :</p>
<blockquote>
<p>Rah, my bad, je viens de mieux relire et voir le « post_data[param_name]['content'] ». Je pensais qu'on pouvait décrire le truc dans le schéma JSON ?</p>
</blockquote>
<p>JSON schéma permet de définir un type "object", mais si les photos, facultatives, ne sont pas chargées, dans l'appel WS c'est <code>null</code> qui est transmis dans le payload json.</p>
<p>J'applique ta suggestion.</p>
<blockquote>
<p>Donc c'est bien <code>status_code // 100 == 2</code> qu'il faut tester (ie les 3xx sont un échec). Mais bon c'est un détail.</p>
</blockquote>
<p>Ok, fait.</p> Passerelle - Development #33099: developper le connecteur Kimocehttps://dev.entrouvert.org/issues/33099?journal_id=1743722019-05-21T14:00:17ZThomas Noël
<ul></ul><p>Désolé de relire mal, encore un truc que je trouve un peu dommage : on devrait remonter tout ce qui vient de leur référentiels et juste ajouter id/text. Par exemple sur les catégories, on reçoit :</p>
<pre>
{"@id": "/api/categories/70",
"id": 70,
"label": "Table surface",
"reference": "TBS"
},
</pre>
<p>On va prendre ici l'info "reference" qui ne sera pas remontée. Et si un jour Kimoce ajoute des choses, on ne les remontera pas non plus.</p>
<p>Selon moi, on devrait remonter un truc avec juste l'ajout de "text" :</p>
<pre>
{
"@id": "/api/categories/70",
"id": 70,
"label": "Table surface",
"text": "Table surface",
"reference": "TBS"
},
</pre>
C'est-à-dire, pour chaque entrée d'un référentiel :
<ul>
<li>s'il y a déjà un id, ne pas y toucher ; sinon l'ajouter avec la valeur de @id</li>
<li>s'il y a déjà un text, ne pas y toucher, sinon l'ajouter avec la valeur de "label" ou de "id" (du premier qui existe)</li>
</ul>
<p>Je ferais ça sur get_referential et sur streets, surtout dans l'idée que tout cela pourrait grandir chez Kimoce (et le connecteur grandira avec, tranquille)</p>
<p>A relire streets, je comprends pas bien le passage :<br /><pre>
if 'id' in kwargs:
params['streetAddress'] = kwargs['id']
if 'q' in kwargs:
params['streetAddress'] = kwargs['q']
</pre></p>
<p>et je pense qu'il y a un bogue au niveau de la ligne 193, la variable "q" n'existe pas (il faut refaire la même requete qu'au dessus, juste renouveller le token)</p> Passerelle - Development #33099: developper le connecteur Kimocehttps://dev.entrouvert.org/issues/33099?journal_id=1744582019-05-21T15:00:38ZSerghei Mihai
<ul><li><strong>Fichier</strong> <a href="/attachments/34538">0001-lille_kimoce-initial-connector-33099.patch</a> <a class="icon-only icon-download" title="Télécharger" href="/attachments/download/34538/0001-lille_kimoce-initial-connector-33099.patch">0001-lille_kimoce-initial-connector-33099.patch</a> ajouté</li></ul><p>Thomas Noël a écrit :</p>
<blockquote>
<p>Selon moi, on devrait remonter un truc avec juste l'ajout de "text" :</p>
<p>[...]</p>
C'est-à-dire, pour chaque entrée d'un référentiel :
<ul>
<li>s'il y a déjà un id, ne pas y toucher ; sinon l'ajouter avec la valeur de @id</li>
<li>s'il y a déjà un text, ne pas y toucher, sinon l'ajouter avec la valeur de "label" ou de "id" (du premier qui existe)</li>
</ul>
</blockquote>
<p>Ok, je rajoute ça à l'exception de l'<code>id</code>. La vraie valeur qui sera utilisé à la création d'une demande dans Kimoce (le <code>_raw</code>) est la valeur de <code>@id</code>. Je préfère éviter que les fonctionnels tapent dans l'appel WS <code>{{ form_var_type_@id }}</code>.<br />L'attribut <code>id</code> sert à filtrer les types, sous-types en fonction du parent. (no comment)</p>
<blockquote>
<p>A relire streets, je comprends pas bien le passage :<br />[...]</p>
</blockquote>
<p>Bien vu, corrigé.</p> Passerelle - Development #33099: developper le connecteur Kimocehttps://dev.entrouvert.org/issues/33099?journal_id=1744952019-05-21T15:58:22ZThomas Noël
<ul><li><strong>Statut</strong> changé de <i>Solution proposée</i> à <i>Solution validée</i></li></ul><p>Pour moi on prend un peu de risque à faire des choses genre member['text'] = member['label'] (parce qu'un jour un référentiel n'aura pas de label), d'une façon générale ce connecteur est assez confiant sur les formats des retours :) Mais on peut aussi avoir confiance, à un moment, et donc ça me va d'en rester là pour l'instant.</p>
<p>J'aurais bien vu une factorisation des répétitifs « requests(token), si 401: requests(new_token) » (surtout que si y'a un 401 ensuite, on fait un peu n'importe quoi) ; mais ça peut attendre aussi.</p>
<p>Ack ainsi en version à poser en recette.</p> Passerelle - Development #33099: developper le connecteur Kimocehttps://dev.entrouvert.org/issues/33099?journal_id=1744972019-05-21T16:04:51ZSerghei Mihai
<ul><li><strong>Statut</strong> changé de <i>Solution validée</i> à <i>Résolu (à déployer)</i></li></ul><pre>
commit 1cb079e4ba888d3624f0463cad3a825c37f18c65 (HEAD -> master, origin/master, origin/HEAD)
Author: Serghei Mihai <smihai@entrouvert.com>
Date: Tue May 14 09:47:44 2019 +0200
lille_kimoce: initial connector (#33099)
commit a7e78140021c170b30435dd37ab1926f23323db8
Author: Serghei Mihai <smihai@entrouvert.com>
Date: Tue May 21 10:26:32 2019 +0200
utils: add simple HTTP Bearer authentication class
</pre> Passerelle - Development #33099: developper le connecteur Kimocehttps://dev.entrouvert.org/issues/33099?journal_id=1745152019-05-21T18:15:48ZFrédéric Pétersfpeters@entrouvert.com
<ul><li><strong>Statut</strong> changé de <i>Résolu (à déployer)</i> à <i>Solution déployée</i></li></ul>