adullact_pastell: add initial connector (#79105) #318

Merged
smihai merged 2 commits from wip/79105-add-initial-adullact-pastell-connector into main 2023-07-17 17:44:30 +02:00
Owner

Avec le nom AdullactPastell pour éviter les confusions et soucis de migration avec les fantômes des anciens connecteurs.

Avec le nom AdullactPastell pour éviter les confusions et soucis de migration avec les fantômes des anciens connecteurs.
smihai force-pushed wip/79105-add-initial-adullact-pastell-connector from f7d20e1d1b to 338d996874 2023-07-07 11:41:58 +02:00 Compare
Author
Owner

Et aussi les traductions.

Et aussi les traductions.
tnoel requested changes 2023-07-07 12:00:37 +02:00
@ -0,0 +72,4 @@
class AdullactPastell(BaseResource, HTTPResource):
api_base_url = models.URLField(
max_length=128,
verbose_name=_('API base URL'),
Owner

Ca serait bien de poser help_text avec un exemple classique ici, du genre « https://pastell.example/api/v2/ », histoire qu'on se rappelle s'il faut ajouter le /api/v2 et s'il faut un / à la fin ou pas... (j'ai mis un exemple au pif, je ne sais pas à quoi ça ressemble habituellement)

Ca serait bien de poser help_text avec un exemple classique ici, du genre « https://pastell.example/api/v2/ », histoire qu'on se rappelle s'il faut ajouter le /api/v2 et s'il faut un / à la fin ou pas... (j'ai mis un exemple au pif, je ne sais pas à quoi ça ressemble habituellement)
Author
Owner

Rajouté.

Rajouté.
smihai marked this conversation as resolved
@ -8,3 +8,3 @@
"Project-Id-Version: Passerelle 0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-07-06 18:05+0200\n"
"POT-Creation-Date: 2023-07-07 11:26+0200\n"
Owner

Mmmh je crois qu'on continue à envoyer les trad à part (enfin je n'en sais plus rien à vrai dire)

Mmmh je crois qu'on continue à envoyer les trad à part (enfin je n'en sais plus rien à vrai dire)
Owner

Oublie moi, trompé par l'interface de gitea qui mixe tout en purée.

Oublie moi, trompé par l'interface de gitea qui mixe tout en purée.
tnoel marked this conversation as resolved
smihai force-pushed wip/79105-add-initial-adullact-pastell-connector from 338d996874 to f1f3fd2069 2023-07-07 12:13:41 +02:00 Compare
tnoel requested changes 2023-07-13 12:37:12 +02:00
@ -0,0 +50,4 @@
'title': _('File object'),
'type': 'object',
'properties': {
'name': {
Owner

Il faut modifier en "filename", car w.c.s. envoie un "filename" et pas un "name"

Il faut modifier en "filename", car w.c.s. envoie un "filename" et pas un "name"
smihai marked this conversation as resolved
@ -0,0 +119,4 @@
description=_('List entity documents'),
parameters={'entity_id': {'description': _('Entity ID'), 'example_value': '42'}},
)
def documents(self, request, entity_id):
Owner

Dans l'idée d'utiliser ça comme source de donnée, il serait bien que ça accepte un ?id= pour remonter une liste avec ce seul document (via un appel à entite/%s/document/%s) ; et donc supprimer le endpoint "document" qui deviendrait inutile.

Dans l'idée d'utiliser ça comme source de donnée, il serait bien que ça accepte un ?id= pour remonter une liste avec ce seul document (via un appel à entite/%s/document/%s) ; et donc supprimer le endpoint "document" qui deviendrait inutile.
Owner

Publicité ici pour juste ajouter datasource=True (cf #43751) ce qui devrait assurer le taf automatiquement.

Publicité ici pour juste ajouter datasource=True (cf #43751) ce qui devrait assurer le taf automatiquement.
smihai marked this conversation as resolved
@ -0,0 +148,4 @@
'entity_id': {'description': _('Entity ID'), 'example_value': '42'},
},
)
def create_document(self, request, entity_id, post_data):
Owner

Je trouve qu'on devrait être plus intelligent que leur API et proposer que DOCUMENT_CREATION_SCHEMA puisse aussi contenir le contenu du document (filename/content/content_type) qu'on uploaderait dans la foulée quand il est présent.

Je trouve qu'on devrait être plus intelligent que leur API et proposer que DOCUMENT_CREATION_SCHEMA puisse aussi contenir le contenu du document (filename/content/content_type) qu'on uploaderait dans la foulée quand il est présent.
Author
Owner

Sur le principe je trouve ça bien, mais si jamais il y a une erreur dans l'ajout du fichier on doit avoir la possibilité d'envoyer le fichier dans un appel séparé.

Sur le principe je trouve ça bien, mais si jamais il y a une erreur dans l'ajout du fichier on doit avoir la possibilité d'envoyer le fichier dans un appel séparé.
Owner

Oui on peut faire en sorte que le "file" envoyé lors de la création ne soit pas obligatoire, et aussi garder le endpoint qui permet de mettre à jour le contenu d'un fichier.

A l'usage je suis quand même assez persuadé que create_document sera souvent utilisé une seule fois.

(aussi, petit détail, moi j'ai bien les endpoint avec des noms sans undersorce, genre name="create-document" dans le endpoint)

Oui on peut faire en sorte que le "file" envoyé lors de la création ne soit pas obligatoire, et aussi garder le endpoint qui permet de mettre à jour le contenu d'un fichier. A l'usage je suis quand même assez persuadé que create_document sera souvent utilisé une seule fois. (aussi, petit détail, moi j'ai bien les endpoint avec des noms sans undersorce, genre name="create-document" dans le endpoint)
smihai marked this conversation as resolved
@ -0,0 +169,4 @@
},
)
def upload_document_file(self, request, entity_id, document_id, post_data):
filename = post_data['file']['name']
Owner

Dans w.c.s. quand on envoie un fichier, c'est filename et pas name (en fait je l'ai déjà dit dans la mise à jour demandée du schéma).

On note à ce sujet que w.c.s. ne permet pas de choisir le nom du fichier envoyé, ça pourrait être utile, et donc à côte de l'objet "file" (dico filename/content/content_type) on pourrait avoir un "filename" optionnel, qui serait le nom du fichier à envoyer dans Pastell.

Autrement dit, au lieu de
filename = post_data['file']['name']
avoir plutôt
filename = post_data.get('filename') or post_data['file']['filename']

et bien sûr modifier le schéma.

Et reporter cette idée dans create_document si on décide de le rendre capable de recevoir le contenu du fichier (voir autre commentaire ci-dessus)

Dans w.c.s. quand on envoie un fichier, c'est filename et pas name (en fait je l'ai déjà dit dans la mise à jour demandée du schéma). On note à ce sujet que w.c.s. ne permet pas de choisir le nom du fichier envoyé, ça pourrait être utile, et donc à côte de l'objet "file" (dico filename/content/content_type) on pourrait avoir un "filename" optionnel, qui serait le nom du fichier à envoyer dans Pastell. Autrement dit, au lieu de `filename = post_data['file']['name']` avoir plutôt `filename = post_data.get('filename') or post_data['file']['filename']` et bien sûr modifier le schéma. Et reporter cette idée dans create_document si on décide de le rendre capable de recevoir le contenu du fichier (voir autre commentaire ci-dessus)
smihai marked this conversation as resolved
smihai force-pushed wip/79105-add-initial-adullact-pastell-connector from f1f3fd2069 to 69df40109b 2023-07-17 16:21:57 +02:00 Compare
smihai requested review from tnoel 2023-07-17 16:23:09 +02:00
tnoel requested changes 2023-07-17 17:12:22 +02:00
tnoel left a comment
Owner

J'aurais bien proposé de rajouter une désérialisation du json reçu en fin de call (et une ApiError explicite si ça n'est pas du JSON) avec un flag accept_non_json=False pour le cas get_document_file, mais je pense qu'on peut s'arrêter là sur mes chipotages.

Mais comme je suis tatasse et que c'est tout de même important d'avoir des endpoints clairs, je veux bien juste une dernière version avec un peu de doc dans les *_SCHEMAS

J'aurais bien proposé de rajouter une désérialisation du json reçu en fin de call (et une ApiError explicite si ça n'est pas du JSON) avec un flag accept_non_json=False pour le cas get_document_file, mais je pense qu'on peut s'arrêter là sur mes chipotages. Mais comme je suis tatasse et que c'est tout de même important d'avoir des endpoints clairs, je veux bien juste une dernière version avec un peu de doc dans les *_SCHEMAS
@ -0,0 +61,4 @@
'type': 'string',
'description': _('Document file\'s field name'),
},
},
Owner

Ajouter ici explicitement, comme dans DOCUMENT_FILE_UPLOAD_SCHEMA la possibilité de choisir le nom du fichier contenu dans file :

'filename': {
  'type': 'string',
  'description': _('Filename (takes precedence over filename in "file" object)'),
 }
Ajouter ici explicitement, comme dans DOCUMENT_FILE_UPLOAD_SCHEMA la possibilité de choisir le nom du fichier contenu dans file : ``` 'filename': { 'type': 'string', 'description': _('Filename (takes precedence over filename in "file" object)'), } ```
Author
Owner

Rajouté.

Rajouté.
smihai marked this conversation as resolved
@ -0,0 +70,4 @@
'required': ['file', 'file_field_name'],
'additionalProperties': False,
'properties': {
'filename': {'type': 'string'},
Owner

ajouter la description, histoire de... (voir ci-dessus)

ajouter la description, histoire de... (voir ci-dessus)
Author
Owner

Fait.

Fait.
smihai marked this conversation as resolved
smihai force-pushed wip/79105-add-initial-adullact-pastell-connector from 69df40109b to 4fc375c908 2023-07-17 17:28:24 +02:00 Compare
smihai requested review from tnoel 2023-07-17 17:32:01 +02:00
tnoel approved these changes 2023-07-17 17:38:58 +02:00
smihai merged commit 8fa7d79b1e into main 2023-07-17 17:44:30 +02:00
smihai deleted branch wip/79105-add-initial-adullact-pastell-connector 2023-07-17 17:44:30 +02:00
Sign in to join this conversation.
No reviewers
No Label
No Milestone
No Assignees
3 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: entrouvert/passerelle#318
No description provided.