adullact_pastell: add initial connector (#79105) #318
Loading…
Reference in New Issue
No description provided.
Delete Branch "wip/79105-add-initial-adullact-pastell-connector"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Avec le nom AdullactPastell pour éviter les confusions et soucis de migration avec les fantômes des anciens connecteurs.
f7d20e1d1b
to338d996874
Et aussi les traductions.
@ -0,0 +72,4 @@
class AdullactPastell(BaseResource, HTTPResource):
api_base_url = models.URLField(
max_length=128,
verbose_name=_('API base URL'),
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)
Rajouté.
@ -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"
Mmmh je crois qu'on continue à envoyer les trad à part (enfin je n'en sais plus rien à vrai dire)
Oublie moi, trompé par l'interface de gitea qui mixe tout en purée.
338d996874
tof1f3fd2069
@ -0,0 +50,4 @@
'title': _('File object'),
'type': 'object',
'properties': {
'name': {
Il faut modifier en "filename", car w.c.s. envoie un "filename" et pas un "name"
@ -0,0 +119,4 @@
description=_('List entity documents'),
parameters={'entity_id': {'description': _('Entity ID'), 'example_value': '42'}},
)
def documents(self, request, entity_id):
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.
Publicité ici pour juste ajouter datasource=True (cf #43751) ce qui devrait assurer le taf automatiquement.
@ -0,0 +148,4 @@
'entity_id': {'description': _('Entity ID'), 'example_value': '42'},
},
)
def create_document(self, request, entity_id, post_data):
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.
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é.
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)
@ -0,0 +169,4 @@
},
)
def upload_document_file(self, request, entity_id, document_id, post_data):
filename = post_data['file']['name']
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)
f1f3fd2069
to69df40109b
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'),
},
},
Ajouter ici explicitement, comme dans DOCUMENT_FILE_UPLOAD_SCHEMA la possibilité de choisir le nom du fichier contenu dans file :
Rajouté.
@ -0,0 +70,4 @@
'required': ['file', 'file_field_name'],
'additionalProperties': False,
'properties': {
'filename': {'type': 'string'},
ajouter la description, histoire de... (voir ci-dessus)
Fait.
69df40109b
to4fc375c908