https://dev.entrouvert.org/https://dev.entrouvert.org/favicon.ico?15861920342021-09-24T13:59:28ZRedmine Entr’ouvertPasserelle - Development #57258: Ajouter un connecteur Plonehttps://dev.entrouvert.org/issues/57258?journal_id=3284832021-09-24T13:59:28ZNicolas Roche (absent jusqu'au 3 avril)
<ul><li><strong>Fichier</strong> <a href="/attachments/57901">0001-plone-add-a-plone.restapi-connector-57258.patch</a> <a class="icon-only icon-download" title="Télécharger" href="/attachments/download/57901/0001-plone-add-a-plone.restapi-connector-57258.patch">0001-plone-add-a-plone.restapi-connector-57258.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><p>Je suis parti d'un connecteur de type "donnée" (opendatasoft et j'ai laissé la recherche sur q/id).</p>
<p>J'ai ajouté un champ "meta" au retour des appels sur les requêtes qui indique le nom et la description de l'objet requête (pour les afficher dans la tuille).</p> Passerelle - Development #57258: Ajouter un connecteur Plonehttps://dev.entrouvert.org/issues/57258?journal_id=3285992021-09-27T08:12:25ZFrédéric Pétersfpeters@entrouvert.com
<ul></ul><p>Je n'ai pas regardé mais tu peux appeler le connecteur plone-restapi, vu que ça s'attaque à ça, plutôt que "plone" en général ?</p> Passerelle - Development #57258: Ajouter un connecteur Plonehttps://dev.entrouvert.org/issues/57258?journal_id=3286502021-09-27T10:19:36ZNicolas Roche (absent jusqu'au 3 avril)
<ul><li><strong>Fichier</strong> <a href="/attachments/57918">0001-plone-restapi-add-a-plone.restapi-connector-57258.patch</a> <a class="icon-only icon-download" title="Télécharger" href="/attachments/download/57918/0001-plone-restapi-add-a-plone.restapi-connector-57258.patch">0001-plone-restapi-add-a-plone.restapi-connector-57258.patch</a> ajouté</li></ul><p>Oui (fait).</p> Passerelle - Development #57258: Ajouter un connecteur Plonehttps://dev.entrouvert.org/issues/57258?journal_id=3286532021-09-27T10:21:23ZNicolas Roche (absent jusqu'au 3 avril)
<ul><li><strong>Lié à</strong> <i><a class="issue tracker-2 status-5 priority-4 priority-default closed" href="/issues/56545">Development #56545</a>: braine l’alleud, adapter la cellule Actualité pour aller chercher les contenus sur plone.</i> ajouté</li></ul> Passerelle - Development #57258: Ajouter un connecteur Plonehttps://dev.entrouvert.org/issues/57258?journal_id=3323222021-10-14T13:26:24ZNicolas Roche (absent jusqu'au 3 avril)
<ul><li><strong>Fichier</strong> <a href="/attachments/58471">0001-plone-restapi-add-a-plone.restapi-connector-57258.patch</a> <a class="icon-only icon-download" title="Télécharger" href="/attachments/download/58471/0001-plone-restapi-add-a-plone.restapi-connector-57258.patch">0001-plone-restapi-add-a-plone.restapi-connector-57258.patch</a> ajouté</li></ul><p>J'ai retiré l'authentification basique au profit de l'authentification OIDC.<br />Je table sur le fait qu'actuellement on n'en a pas besoin (<a class="issue tracker-1 status-5 priority-4 priority-default closed" title="Bug: braine l’alleud, ne pas échapper l'url des délibérations communales (Fermé)" href="https://dev.entrouvert.org/issues/57755">#57755</a>) et qu'à terme tout passera par OIDC.</p>
<p>Bien que l'authentification OIDC soit spécifique à Imio, j'ai laissé le connecteur dans "apps" parce que la partie requête de recherche peut toujours s'utiliser de façon anonyme.</p>
Pour aider la relecture :
<ul>
<li>connecteur copié depuis opendatasoft, pour avoir des objets Query très similaires.</li>
<li>connection OIDC avec token copié depuis lille_kimoce.</li>
<li>système CRUD copié depuis esirius.</li>
<li>payload du post et du put sans schéma comme sur greco.</li>
</ul>
<p>Le connecteur est documenté ici :<br /><a class="external" href="https://dev.entrouvert.org/projects/braine-l-alleud/wiki/Plone_REST_API">https://dev.entrouvert.org/projects/braine-l-alleud/wiki/Plone_REST_API</a></p> Passerelle - Development #57258: Ajouter un connecteur Plonehttps://dev.entrouvert.org/issues/57258?journal_id=3324822021-10-15T08:06:20ZFrédéric Pétersfpeters@entrouvert.com
<ul></ul><pre>
@classmethod
def plone_to_wcs(cls, key):
return 'portal_%s' % key[1:] if key[0] == '@' else None
@classmethod
def wcs_to_plone(cls, key):
return '@%s' % key[7:] if key[0:7] == 'portal_' else None
</pre>
<p>Il manque autour de ça des commentaires et peut-être des meilleurs noms de méthodes pour expliciter ce que c'est supposé faire. Je comprends que ça tourne autour d'un normalize_record() mais c'est confus.</p>
<pre>
path = '/'.join(x for x in [path.rstrip('/'), uri.strip('/'), uid.strip('/')] if x)
</pre>
<p>Uh? Sans être sûr de moi je dirais que c'est du code pour éviter un double-slash quelque part mais c'est abscons. Et peut-être pas ça. Et à mon avis à laisser de côté.</p>
<blockquote>
<p>connecteur copié depuis opendatasoft, pour avoir des objets Query très similaires.</p>
</blockquote>
<p>Il faut quand même pas trop copié/collé, ce truc de refine/exclude facet est beaucoup trop le vocabulaire spécifique opendatasoft :</p>
<pre>
help_text=_('Specify refine and exclude facet expressions separated lines'),
</pre>
<p><sub>~~</sub></p>
<pre>
from django.utils.six.moves.urllib import parse as urlparse
</pre>
<p>Il faut arrêter avec six, on ne fait plus que du python3.</p>
<pre>
query = urlparse.urlsplit(self.service_url)[3]
</pre>
<p>c'est peu clair d'utiliser [3], on gagne vraiment en compréhension à plutôt faire .query.</p>
<pre>
models.UUIDField,
</pre>
<p>sort de nulle part. (?)</p> Passerelle - Development #57258: Ajouter un connecteur Plonehttps://dev.entrouvert.org/issues/57258?journal_id=3325692021-10-15T10:46:44ZNicolas Roche (absent jusqu'au 3 avril)
<ul><li><strong>Fichier</strong> <a href="/attachments/58504">0001-plone-restapi-add-a-plone.restapi-connector-57258.patch</a> <a class="icon-only icon-download" title="Télécharger" href="/attachments/download/58504/0001-plone-restapi-add-a-plone.restapi-connector-57258.patch">0001-plone-restapi-add-a-plone.restapi-connector-57258.patch</a> ajouté</li></ul><blockquote>
<p>Il manque autour de ça des commentaires et peut-être des meilleurs noms de méthodes pour expliciter ce que c'est supposé faire.</p>
</blockquote>
<p>C'est pour éviter ces complications dans combo <br /><a class="external" href="https://dev.entrouvert.org/issues/51764#note-15">https://dev.entrouvert.org/issues/51764#note-15</a><br /><pre>
<a href="{{actu|get:'@id'}}">
</pre></p>
<p>Mais aussi parce que pour passer ces champs dans la query string vers Plone il faut les renommer de la sorte.<br /><a class="external" href="https://dev.entrouvert.org/issues/51764#note-9">https://dev.entrouvert.org/issues/51764#note-9</a><br /><pre>
https://conseil.staging.imio.be/@search?portal_type=Meeting
</pre></p>
<p>Dans le payload, Plone accepte les 2 syntaxes. J'ai trouvé plus cohérent de renommer les clés partout.<br />J'ai essayé d'être plus explicite dans le code/commentaires.</p>
<blockquote>
<p>c'est du code pour éviter un double-slash quelque part</p>
</blockquote>
<p>oui, et pour gérer les paramètres vides (j'ai simplifié).</p>
<blockquote>
<p>Il faut quand même pas trop copié/collé,</p>
</blockquote>
<p>J'ai modifié :<br /><pre>
filter_expression -> 'Specify more URL parameters (key=value) separated by lines'
</pre></p>
<blockquote>
<p>Il faut arrêter avec six, on ne fait plus que du python3.<br />c'est peu clair d'utiliser [3], on gagne vraiment en compréhension à plutôt faire .query.</p>
</blockquote>
<p>Fait.</p>
<blockquote>
<p>sort de nulle part. (?)</p>
</blockquote>
<p>Un oubli, merci.</p> Passerelle - Development #57258: Ajouter un connecteur Plonehttps://dev.entrouvert.org/issues/57258?journal_id=3325742021-10-15T11:05:40ZFrédéric Pétersfpeters@entrouvert.com
<ul></ul><blockquote>
<p>C'est pour éviter ces complications dans combo <br />Mais aussi parce que pour passer ces champs dans la query string vers Plone il faut les renommer de la sorte.</p>
</blockquote>
<p>Je crains que ça n'amène plus de confusion qu'autre chose, sauf impossibilité (à exprimer) je ferais vraiment sans.</p> Passerelle - Development #57258: Ajouter un connecteur Plonehttps://dev.entrouvert.org/issues/57258?journal_id=3326372021-10-15T14:21:08ZNicolas Roche (absent jusqu'au 3 avril)
<ul><li><strong>Fichier</strong> <a href="/attachments/58516">0001-plone-restapi-add-a-plone.restapi-connector-57258.patch</a> <a class="icon-only icon-download" title="Télécharger" href="/attachments/download/58516/0001-plone-restapi-add-a-plone.restapi-connector-57258.patch">0001-plone-restapi-add-a-plone.restapi-connector-57258.patch</a> ajouté</li></ul><blockquote>
<p>Je crains que ça n'amène plus de confusion qu'autre chose, sauf impossibilité (à exprimer) je ferais vraiment sans.</p>
</blockquote>
<p>Merci, je me suis trompé : il faut nécessairement passer '@truc' dans le payload (ici testé avec "portal_type") :<br /><pre>
{'message': "Property '@type' is required", 'type': 'BadRequest'}
</pre></p>
<p>Pour la récupération des champs '<code>truc' dans combo et wcs, je vois un endroit où ça pourrait coincer : dans le gabarit du connecteur où l'on ne dispose pas du filtre @get</code>.<br />Aussi, wcs ne reconstruit pas de variable qui permet d'atteindre des valeurs dont le chemin contient des des clé préfixées par des '@'.<br />Je propose de laisser le renommage des clé de Plone, là où l'on fait la normalisation.</p>
<p>Par contre cela m'amène à un autre point que j'ai zappé.<br />Dans wcs, pour passer des dictionnaires et des tableaux je dois faire "unflatten" sur le payload.</p> Passerelle - Development #57258: Ajouter un connecteur Plonehttps://dev.entrouvert.org/issues/57258?journal_id=3326482021-10-15T14:39:08ZFrédéric Pétersfpeters@entrouvert.com
<ul></ul><blockquote>
<p>Merci, je me suis trompé : il faut nécessairement passer '@truc' dans le payload (ici testé avec "portal_type") :</p>
</blockquote>
<p>Au plus je regarde au moins je comprends.</p>
<p>Dans <a class="external" href="https://dev.entrouvert.org/attachments/58388">https://dev.entrouvert.org/attachments/58388</a> qui est ton script d'envoi d'infos, ça envoie une clé title, pas @title.</p>
<p>Mais en fait en passant du temps à décortiquer ce qui a pu changer entre tes patchs, la situation du dernier serait en fait bien "on envoie les données que wcs envoie, comme wcs les envoie". Mais que par contre "on modifie les données reçues de Plone : on remplace les @ en préfixe par portal_".</p>
<p>Ça m'a l'air encore totalement confusion. Le fichier de test qui ne correspondent pas du tout à nos cas pratiques n'aide pas.</p>
<p>S'il fallait un truc, je serais pour quelque chose de bien explicite : noter que les clés @id et @type qui peuvent se trouver dans les réponses de plone sont converties en clés PLONE_id et PLONE_type : 1/ on explicite les clés concernées, on annonce qu'on ne va pas aller modifier n'importe quoi, 2/ on explicite le changement que ça amène et on met un changement qui est bien clair, genre PLONE_ plutôt que portal_ qui ne signifie rien.</p>
<p>Qu'il soit clair aussi que j'ai une détestation assez tenace du mot "normalize" qui veut juste rien dire, donc quand je répète <strong>explicite</strong> ci-dessus, c'est aussi pour encourager un nom de méthode explicite, genre <code>adapt_id_and_type_plone_attributes</code>.</p>
<blockquote>
<p>Dans wcs, pour passer des dictionnaires et des tableaux je dois faire "unflatten" sur le payload.</p>
</blockquote>
<p>On gagnerait à un exemple pratique. (je ne vais pas creuser)</p> Passerelle - Development #57258: Ajouter un connecteur Plonehttps://dev.entrouvert.org/issues/57258?journal_id=3326872021-10-15T19:21:02ZNicolas Roche (absent jusqu'au 3 avril)
<ul><li><strong>Fichier</strong> <a href="/attachments/58548">0001-plone-restapi-add-a-plone.restapi-connector-57258.patch</a> <a class="icon-only icon-download" title="Télécharger" href="/attachments/download/58548/0001-plone-restapi-add-a-plone.restapi-connector-57258.patch">0001-plone-restapi-add-a-plone.restapi-connector-57258.patch</a> ajouté</li></ul><blockquote>
<p>Dans <a class="external" href="https://dev.entrouvert.org/attachments/58388">https://dev.entrouvert.org/attachments/58388</a> qui est ton script d'envoi d'infos, ça envoie une clé title, pas @title.</p>
</blockquote>
<p>(je ne comprend pas à quoi fait référence la clé @title)</p>
<blockquote>
<p>Ça m'a l'air encore totalement confusion. Le fichier de test qui ne correspondent pas du tout à nos cas pratiques n'aide pas.</p>
</blockquote>
<p>Fait. Ça me permet d'ajouter des données de test qui contiennent un exemple avec de la geolocalisation et des d'horaires.</p>
<blockquote>
<p>S'il fallait un truc, je serais pour quelque chose de bien explicite : <br />noter que les clés @id et @type qui peuvent se trouver dans les réponses de plone sont converties en clés PLONE_id et PLONE_type</p>
</blockquote>
<p>Fait en commentaire.</p>
<blockquote>
<p>1/ on explicite les clés concernées, on annonce qu'on ne va pas aller modifier n'importe quoi,</p>
</blockquote>
<p>Cela concerne uniquement les clé qui commencent par '@', mais oui, ici il n'y en a que 3 : '@id', '@type' et '@components'.<br />Je les ai posées dans une variable.</p>
<blockquote>
<p>2/ on explicite le changement que ça amène et on met un changement qui est bien clair, genre PLONE_ plutôt que portal_ qui ne signifie rien.</p>
</blockquote>
<p>Oui, PLONE_ pour la réponse ; portal_ c'est pour la query-string, ça n'a rien à voir ici.</p>
<blockquote>
<p>Qu'il soit clair aussi que j'ai une détestation assez tenace du mot "normalize" qui veut juste rien dire, donc quand je répète explicite ci-dessus, c'est aussi pour encourager un nom de méthode explicite, genre adapt_id_and_type_plone_attributes.</p>
</blockquote>
<p>Fait.</p>
<blockquote>
<p>Dans wcs, pour passer des dictionnaires et des tableaux je dois faire "unflatten" sur le payload.<br />On gagnerait à un exemple pratique. (je ne vais pas creuser)</p>
</blockquote>
<p>C'est ma faute, je ne me suis mal relu : <del>je dois faire</del> -> je fait à présent appel à "unflatten" <br />cf test_create :<br /><pre>
payload = {
'topics/0/title': 'Tourisme',
'topics/0/token': 'tourism',
}
</pre></p> Passerelle - Development #57258: Ajouter un connecteur Plonehttps://dev.entrouvert.org/issues/57258?journal_id=3327312021-10-17T23:14:15ZNicolas Roche (absent jusqu'au 3 avril)
<ul></ul><blockquote><blockquote>
<p>Merci, je me suis trompé : il faut nécessairement passer '@truc' dans le payload (ici testé avec "portal_type") :</p>
</blockquote>
<p>Au plus je regarde au moins je comprends.</p>
</blockquote>
<p>Je me suis embrouillé, je traduisais 'plone_' en '@' et j'envoyais bien '@truc' dans le payload.<br />A présent cette partie là est retirée.</p> Passerelle - Development #57258: Ajouter un connecteur Plonehttps://dev.entrouvert.org/issues/57258?journal_id=3328862021-10-18T11:58:49ZNicolas Roche (absent jusqu'au 3 avril)
<ul><li><strong>Dupliqué par</strong> <i><a class="issue tracker-2 status-5 priority-4 priority-default closed" href="/issues/57933">Development #57933</a>: plone_restapi : ajout d'un endpoint pour publier les documents</i> ajouté</li></ul> Passerelle - Development #57258: Ajouter un connecteur Plonehttps://dev.entrouvert.org/issues/57258?journal_id=3328882021-10-18T11:59:59ZNicolas Roche (absent jusqu'au 3 avril)
<ul><li><strong>Dupliqué par</strong> <i><a class="issue tracker-2 status-5 priority-4 priority-default closed" href="/issues/57917">Development #57917</a>: plone_restapi : adapter le format des fichiers (images)</i> ajouté</li></ul> Passerelle - Development #57258: Ajouter un connecteur Plonehttps://dev.entrouvert.org/issues/57258?journal_id=3328922021-10-18T12:09:31ZNicolas Roche (absent jusqu'au 3 avril)
<ul><li><strong>Dupliqué par</strong> <i><a class="issue tracker-1 status-6 priority-4 priority-default closed" href="/issues/57904">Bug #57904</a>: plone_restapi : ajouter 3 endpoints pour accéder aux référentiels</i> ajouté</li></ul> Passerelle - Development #57258: Ajouter un connecteur Plonehttps://dev.entrouvert.org/issues/57258?journal_id=3329502021-10-18T13:55:23ZNicolas Roche (absent jusqu'au 3 avril)
<ul><li><strong>Fichier</strong> <a href="/attachments/58582">0001-plone-restapi-add-a-plone.restapi-connector-57258.patch</a> <a class="icon-only icon-download" title="Télécharger" href="/attachments/download/58582/0001-plone-restapi-add-a-plone.restapi-connector-57258.patch">0001-plone-restapi-add-a-plone.restapi-connector-57258.patch</a> ajouté</li></ul><p>Ce n'est pas encore testé localement (je suis en train de le faire mais c'est long) via wcs, mais je suis plutôt confiant.</p> Passerelle - Development #57258: Ajouter un connecteur Plonehttps://dev.entrouvert.org/issues/57258?journal_id=3329512021-10-18T13:59:46ZNicolas Roche (absent jusqu'au 3 avril)
<ul><li><strong>Fichier</strong> <a href="/attachments/58583">0001-plone-restapi-add-a-plone.restapi-connector-57258.patch</a> <a class="icon-only icon-download" title="Télécharger" href="/attachments/download/58583/0001-plone-restapi-add-a-plone.restapi-connector-57258.patch">0001-plone-restapi-add-a-plone.restapi-connector-57258.patch</a> ajouté</li></ul><p>Zut, grosse typo de corrigée 'addapt' -> 'adapt'.</p> Passerelle - Development #57258: Ajouter un connecteur Plonehttps://dev.entrouvert.org/issues/57258?journal_id=3329842021-10-18T15:08:56ZFrédéric Pétersfpeters@entrouvert.com
<ul><li><strong>Statut</strong> changé de <i>Solution proposée</i> à <i>Solution validée</i></li></ul><p>[ici des commentaires]</p>
<p>Mais on n'a pas le temps, fuck it ça sera des corrections.</p> Passerelle - Development #57258: Ajouter un connecteur Plonehttps://dev.entrouvert.org/issues/57258?journal_id=3329852021-10-18T15:11:35ZNicolas Roche (absent jusqu'au 3 avril)
<ul><li><strong>Statut</strong> changé de <i>Solution validée</i> à <i>Résolu (à déployer)</i></li></ul><pre>
commit 7fc18248dd700365f008d2b7ddefd9c4b35c2a15
Author: Nicolas ROCHE <nroche@entrouvert.com>
Date: Tue Sep 21 17:16:06 2021 +0200
plone-restapi: add a plone.restapi connector (#57258)
</pre> Passerelle - Development #57258: Ajouter un connecteur Plonehttps://dev.entrouvert.org/issues/57258?journal_id=3330092021-10-18T16:17:36ZFré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>