pastell: add initial connector (#79105) #300

Merged
smihai merged 1 commits from wip/79105-pastell-initial-connector into main 2023-07-06 11:45:00 +02:00
Owner
No description provided.
smihai force-pushed wip/79105-pastell-initial-connector from 853f3b9a7f to 29f71d36f9 2023-06-28 18:08:25 +02:00 Compare
smihai force-pushed wip/79105-pastell-initial-connector from 29f71d36f9 to 4c310a09eb 2023-06-28 18:19:50 +02:00 Compare
smihai force-pushed wip/79105-pastell-initial-connector from 4c310a09eb to ae13a14c2c 2023-06-28 18:40:27 +02:00 Compare
smihai force-pushed wip/79105-pastell-initial-connector from ae13a14c2c to 5f9a134e04 2023-07-03 18:52:16 +02:00 Compare
smihai force-pushed wip/79105-pastell-initial-connector from 5f9a134e04 to 1254e0dead 2023-07-03 22:33:40 +02:00 Compare
smihai changed title from WIP: pastell: add initial connector (#79105) to pastell: add initial connector (#79105) 2023-07-03 22:42:16 +02:00
ecazenave requested changes 2023-07-05 18:38:10 +02:00
@ -0,0 +100,4 @@
def call(self, path, method='get', params=None, **kwargs):
url = urlparse.urljoin(self.api_base_url, path)
response = getattr(self.requests, method)(url, params=params, **kwargs, **self.requests_options)
Owner

Je trouve la forme self.requests.request(url=url, method=method ....) plus visible, à ton bon cœur.

Aussi ça peut péter un exception dès maintenant, perso j'encapsule toujours cet appel façon :

try:
    resp = self.requests.request(url=url, method=method, **kwargs)
except (requests.Timeout, requests.RequestException) as e:
    raise APIError(str(e)) 
Je trouve la forme self.requests.request(url=url, method=method ....) plus visible, à ton bon cœur. Aussi ça peut péter un exception dès maintenant, perso j'encapsule toujours cet appel façon : ``` try: resp = self.requests.request(url=url, method=method, **kwargs) except (requests.Timeout, requests.RequestException) as e: raise APIError(str(e)) ```
Author
Owner

Ok, j'ai modifié pour faire comme tu le suggères.

Ok, j'ai modifié pour faire comme tu le suggères.
smihai marked this conversation as resolved
@ -0,0 +104,4 @@
try:
response.raise_for_status()
except:
raise APIError(response.json())
Owner

Possible que tu aies pas toujours du json sous la main à ce moment là, genre en cas d'erreur 500 mal gérée par Pastell.

Perso je fais ça :

try:
   resp.raise_for_status()
except requests.RequestException as main_exc:
   try:
       err_data = resp.json()
   except (json.JSONDecodeError, requests.exceptions.RequestException):
       err_data = {'response_text': resp.text}
   raise APIError(str(main_exc), data=err_data)
Possible que tu aies pas toujours du json sous la main à ce moment là, genre en cas d'erreur 500 mal gérée par Pastell. Perso je fais ça : ``` try: resp.raise_for_status() except requests.RequestException as main_exc: try: err_data = resp.json() except (json.JSONDecodeError, requests.exceptions.RequestException): err_data = {'response_text': resp.text} raise APIError(str(main_exc), data=err_data) ```
Author
Owner

raise_for_status sera déjà intercepté par RequestException que tu as suggéré plus haut.

`raise_for_status` sera déjà intercepté par `RequestException` que tu as suggéré plus haut.
smihai marked this conversation as resolved
@ -0,0 +147,4 @@
)
def document(self, request, entity_id, document_id):
response = self.call('entite/%s/document/%s' % (entity_id, document_id))
return response.json()
Owner

Plutôt sous une clé 'data' ? (oui je sais ça va pas changer la face du monde mais perso plus confortable à ce qu'on fasse partout la même chose, valable aussi pour les autres endpoints)

return {data: response.json()}

Plutôt sous une clé 'data' ? (oui je sais ça va pas changer la face du monde mais perso plus confortable à ce qu'on fasse partout la même chose, valable aussi pour les autres endpoints) ``` return {data: response.json()} ```
Author
Owner

Ok, je fais ça.

Ok, je fais ça.
smihai marked this conversation as resolved
@ -0,0 +164,4 @@
document_id = response.json()['id_d']
# update it with other attributes
response = self.call('entite/%s/document/%s' % (entity_id, document_id), 'patch', params=post_data)
Owner

Si mes souvenirs sont bons, c'est ici que Pastell attend tout et n'importe quoi en termes d'arguments selon le type de documents.

Je pensais pas que ce serait aussi facile (genre qu'il faudrait passer des booléens, des entiers ...).

Ce commentaire n'appelle aucun changement.

Si mes souvenirs sont bons, c'est ici que Pastell attend tout et n'importe quoi en termes d'arguments selon le type de documents. Je pensais pas que ce serait aussi facile (genre qu'il faudrait passer des booléens, des entiers ...). Ce commentaire n'appelle aucun changement.
Author
Owner

J'ai été surpris également de la facilité avec laquelle Pastell accepte n'importe quoi et prend que les champs qui correspondent au modèle du document qu'on souhaite créer.

J'ai été surpris également de la facilité avec laquelle Pastell accepte n'importe quoi et prend que les champs qui correspondent au modèle du document qu'on souhaite créer.
smihai marked this conversation as resolved
smihai force-pushed wip/79105-pastell-initial-connector from 1254e0dead to bd48c4c3a1 2023-07-06 11:07:24 +02:00 Compare
smihai requested review from ecazenave 2023-07-06 11:07:33 +02:00
smihai force-pushed wip/79105-pastell-initial-connector from bd48c4c3a1 to d1d9f5d39e 2023-07-06 11:17:44 +02:00 Compare
smihai force-pushed wip/79105-pastell-initial-connector from d1d9f5d39e to b0def9610f 2023-07-06 11:33:38 +02:00 Compare
ecazenave approved these changes 2023-07-06 11:40:05 +02:00
smihai merged commit ccb53be16e into main 2023-07-06 11:45:00 +02:00
smihai deleted branch wip/79105-pastell-initial-connector 2023-07-06 11:45:00 +02:00
Sign in to join this conversation.
No reviewers
No Label
No Milestone
No Assignees
2 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#300
No description provided.