Development #33424
developper le connecteur AstreGS
0%
Description
Specs fonctionnelles et la doc fournies dans https://dev.entrouvert.org/projects/alpes-maritimes/wiki/_Subventions_
Fichiers
Révisions associées
Historique
Mis à jour par Serghei Mihai il y a presque 5 ans
- Fichier 0002-astregs-add-initial-connector-33424.patch 0002-astregs-add-initial-connector-33424.patch ajouté
- Fichier 0001-utils-allow-SOAP-services-address-overwrite.patch 0001-utils-allow-SOAP-services-address-overwrite.patch ajouté
- Statut changé de Nouveau à Solution proposée
- Patch proposed changé de Non à Oui
Première version permettant la recherche, remontée des informations sur les associations, appairage, désappairage.
Au préalable un peu de refactoring de la méthode retournant le client SOAP pour écraser les locations déclarés dans la WSDL.
Mis à jour par Frédéric Péters il y a presque 5 ans
0001 va casser l'adaptation cart@ds de Grand Lyon, je préférerais éviter.
Mis à jour par Frédéric Péters il y a presque 5 ans
_('Exercice') n'est pas de l'anglais. (financial period)
Il y a vraiment nécessité de passer par inspect ?
Ok pour s'épargner les verbose_name à traduire quand ça n'apparait nulle part dans l'UI ?
Mis à jour par Serghei Mihai il y a presque 5 ans
- Fichier 0001-astregs-add-initial-connector-33424.patch 0001-astregs-add-initial-connector-33424.patch ajouté
Ok, sans le premier patch.
Je retire l'internationalisation des paramètres "Exercice", "Organisme" et "Budget", nécessaires pour l'authentification auprès de l'API.
Avec inspect
je retourne tout ce que renvoie l'API pour un affichage d'autres infos dans un formulaire que celles de la liste avec les sirets.
Mis à jour par Benjamin Dauvergne il y a presque 5 ans
Comme Fred, il y a une différence entre item.__dict__ et inspect.getmembers(item) ?
Mis à jour par Serghei Mihai il y a presque 5 ans
item.__dict__
:
{'__values__': OrderedDict([(u'TIERS_ID', '1165'), (u'Code_tiers', '4507'), (u'Organisme', 'CG06'), (u'Nom_enregistrement', 'ACADEMIE INTERNATIONALE D ETE DE NICE'), (u'Code_postal', '06000'), (u'Libelle_Postale', 'NICE'), (u'Adresse_destinataire', 'ACADEMIE INTERNATIONALE D ETE'), (u'Telephone', '04 93 81 01 23'), (u'Indicateur_tiers_financier', '1'), (u'Code_Famille_du_tiers', '51'), (u'libelle_court_de_la_famille', 'PES-ASSOCIATIONS'), (u'Adresse_complementaire', 'DE NICE A I E N'), (u'Numero_de_Fax', '04 93 53 33 91'), (u'le_libelle_court_du_statut', u'valid\xe9'), (u'Sigle', 'A.I.E.N.'), (u'Complement_geographique', None), (u'adresse_email', None), (u'Type_Tiers_D_ou_Fournisseur_ou_', '*'), (u'Nature_juridique_du_debiteur', 'F1'), (u'libelle_court', None), (u'Rue_-_Voie', None), (u'Page_Web', None), (u'Indicateur_tiers_permanent', '1'), (u'Code_APE_tiers', None), (u'Libelle_court', None), (u'Complement_voie_-_lieu_dit_-_BP', None), (u'identifiant_de_tiers_de_reprise', '4507'), (u'Tiers_a_declarer_aux__fiscaux', '0'), (u'Numero_SIRET', '33238763800049')])}
inspect.getmembers(item)
:
[(u'Adresse_complementaire', 'DE NICE A I E N'), (u'Adresse_destinataire', 'ACADEMIE INTERNATIONALE D ETE'), (u'Code_APE_tiers', None), (u'Code_Famille_du_tiers', '51'), (u'Code_postal', '06000'), (u'Code_tiers', '4507'), (u'Complement_geographique', None), (u'Complement_voie_-_lieu_dit_-_BP', None), (u'Indicateur_tiers_financier', '1'), (u'Indicateur_tiers_permanent', '1'), (u'Libelle_Postale', 'NICE'), (u'Libelle_court', None), (u'Nature_juridique_du_debiteur', 'F1'), (u'Nom_enregistrement', 'ACADEMIE INTERNATIONALE D ETE DE NICE'), (u'Numero_SIRET', '33238763800049'), (u'Numero_de_Fax', '04 93 53 33 91'), (u'Organisme', 'CG06'), (u'Page_Web', None), (u'Rue_-_Voie', None), (u'Sigle', 'A.I.E.N.'), (u'TIERS_ID', '1165'), (u'Telephone', '04 93 81 01 23'), (u'Tiers_a_declarer_aux__fiscaux', '0'), (u'Type_Tiers_D_ou_Fournisseur_ou_', '*'), (u'adresse_email', None), (u'identifiant_de_tiers_de_reprise', '4507'), (u'le_libelle_court_du_statut', u'valid\xe9'), (u'libelle_court', None), (u'libelle_court_de_la_famille', 'PES-ASSOCIATIONS')]
Mis à jour par Serghei Mihai il y a presque 5 ans
- Fichier 0001-astregs-add-initial-connector-33424.patch 0001-astregs-add-initial-connector-33424.patch ajouté
Et je découvre: https://python-zeep.readthedocs.io/en/latest/helpers.html
Patch à jour.
Mis à jour par Benjamin Dauvergne il y a presque 5 ans
Ok je vois on peut modifier le comportement de getmembers on surchargeant dir().
Mis à jour par Serghei Mihai il y a presque 5 ans
zeep.helpers.serialize_object
fait très bien l'affaire.
Mis à jour par Frédéric Péters il y a presque 5 ans
+ association_data['name'] = association_data['Nom_enregistrement'] + association_data['address'] = association_data['Nom_enregistrement']
C'est vraiment Nom_enregistrement qu'on veut deux fois ?
+ data.append({'id': '1', ...
J'aurais immédiatement mis email, mobile, mail, comme id, plutôt que des numéros qui semblent arbitraires. (sauf s'ils ne le sont pas).
Mis à jour par Benjamin Dauvergne il y a presque 5 ans
Serghei Mihai a écrit :
zeep.helpers.serialize_object
fait très bien l'affaire.
get_verbose_name est inutile, BaseResource fait déjà ça
Pas fan du mock de SOAP, ça n'apporte globalement aucune information à part que ce qu'on espère arrive vu qu'on le produit :/
Je trouve plus propre d'enregistrer de vrai réponses et de les rejouer.
Il doit y avoir une logique ici mais ça m'échappe :
association_data['name'] = association_data['Nom_enregistrement'] association_data['address'] = association_data['Nom_enregistrement']
try: link_request = LinkRequest.objects.get(resource=self, association_id=association_id) except LinkRequest.DoesNotExist: token = get_random_string() link_request = LinkRequest.objects.create(resource=self, association_id=association_id, token=token)
plutôt
link_request, created = LinkRequest.objects.get_or_create(resource=self, association_id=association_id, defaults={'token': get_random_string()})
Les tokens c'est pour la liaison ? Normalement on le génère dans w.c.s.
links me parait insuffisant pour être utilisé pour lister les associations, ça devrait filer un peu plus d'informations, si son utilisation n'est pas cadré avec Mike il vaut mieux le virer pour l'instant et revenir dessus plus tard.
Mis à jour par Serghei Mihai il y a presque 5 ans
Benjamin Dauvergne a écrit :
Pas fan du mock de SOAP, ça n'apporte globalement aucune information à part que ce qu'on espère arrive vu qu'on le produit :/
Je trouve plus propre d'enregistrer de vrai réponses et de les rejouer.
J'ai préféré me concentrer sur le test de mon code que de simuler la couche un peu plus basse de zeep
.
Il doit y avoir une logique ici mais ça m'échappe :
[...]
Non, c'est une scorie. Je vais le virer.
Les tokens c'est pour la liaison ? Normalement on le génère dans w.c.s.
Mike m'avait dit dans https://dev.entrouvert.org/issues/34032#note-7 que la source des données devait avoir le format comme dans #32208 et j'avais compris que c'était au connecteur de générer le token.
Mais ça m'irait bien que ça soit wcs.
links me parait insuffisant pour être utilisé pour lister les associations, ça devrait filer un peu plus d'informations, si son utilisation n'est pas cadré avec Mike il vaut mieux le virer pour l'instant et revenir dessus plus tard.
Yep, je l'avais inventé pour une eventuelle cellule json listant les appairages, mais ça peut attendre.
Mis à jour par Serghei Mihai il y a presque 5 ans
Mis à jour par Benjamin Dauvergne il y a presque 5 ans
Serghei Mihai a écrit :
Benjamin Dauvergne a écrit :
Pas fan du mock de SOAP, ça n'apporte globalement aucune information à part que ce qu'on espère arrive vu qu'on le produit :/
Je trouve plus propre d'enregistrer de vrai réponses et de les rejouer.J'ai préféré me concentrer sur le test de mon code que de simuler la couche un peu plus basse de
zeep
.
On ne teste pas zeep on teste que ton code est compatible avec le WSDL, en fait qu'il fonctionne quoi.
Les tokens c'est pour la liaison ? Normalement on le génère dans w.c.s.
Mike m'avait dit dans https://dev.entrouvert.org/issues/34032#note-7 que la source des données devait avoir le format comme dans #32208 et j'avais compris que c'était au connecteur de générer le token.
Mais ça m'irait bien que ça soit wcs.
En fait tu parles de #32208 qui a été abandonné au profit de #32618 il y a deux mois. Le code dont parle Mike c'est celui du connecteur atos-genesys là :
http://git.entrouvert.org/passerelle.git/tree/passerelle/apps/atos_genesys/models.py
Plus précisément le format en sortie est là :
http://git.entrouvert.org/passerelle.git/tree/passerelle/apps/atos_genesys/models.py#n430
Les tokens sont générés via les directives django introduite dans #31268.
links me parait insuffisant pour être utilisé pour lister les associations, ça devrait filer un peu plus d'informations, si son utilisation n'est pas cadré avec Mike il vaut mieux le virer pour l'instant et revenir dessus plus tard.
Yep, je l'avais inventé pour une eventuelle cellule json listant les appairages, mais ça peut attendre.
Justement on ne peut pas faire ce genre de cellule avec juste ces informations.
Mis à jour par Emmanuel Cazenave il y a presque 5 ans
Benjamin Dauvergne a écrit :
Serghei Mihai a écrit :
Benjamin Dauvergne a écrit :
Pas fan du mock de SOAP, ça n'apporte globalement aucune information à part que ce qu'on espère arrive vu qu'on le produit :/
Je trouve plus propre d'enregistrer de vrai réponses et de les rejouer.J'ai préféré me concentrer sur le test de mon code que de simuler la couche un peu plus basse de
zeep
.On ne teste pas zeep on teste que ton code est compatible avec le WSDL, en fait qu'il fonctionne quoi.
Je mock systématiquement zeep dans les tests, je trouve que ça fait tout à fait le taf (pas d'opposition ce que d'autres testent différemment, mais opposition à ce que ça devienne une exigence).
Mis à jour par Benjamin Dauvergne il y a presque 5 ans
Emmanuel Cazenave a écrit :
Je mock systématiquement zeep dans les tests, je trouve que ça fait tout à fait le taf (pas d'opposition ce que d'autres testent différemment, mais opposition à ce que ça devienne une exigence).
Oui parce que par ailleurs vous testez en vrai sur le coté, mais si on ne veut pas dépendre de tests à la main sur le coté vaut mieux des tests qui testent tout. De toute façon ce n'est pas bloquant pour ce ticket, ce qui est plus bloquant c'est le fait que l'API ne corresponde pas à ce que Mike fait dans ses workflows/templates avec atos-genesys.
Mis à jour par Serghei Mihai il y a presque 5 ans
Je suis en train de faire les modifs demandées (y compris rajouter les réponses XML).
Mis à jour par Benjamin Dauvergne il y a presque 5 ans
Benjamin Dauvergne a écrit :
Emmanuel Cazenave a écrit :
Je mock systématiquement zeep dans les tests, je trouve que ça fait tout à fait le taf (pas d'opposition ce que d'autres testent différemment, mais opposition à ce que ça devienne une exigence).
Oui parce que par ailleurs vous testez en vrai sur le coté, mais si on ne veut pas dépendre de tests à la main sur le coté vaut mieux des tests qui testent tout. De toute façon ce n'est pas bloquant pour ce ticket, ce qui est plus bloquant c'est le fait que l'API ne corresponde pas à ce que Mike fait dans ses workflows/templates avec atos-genesys.
Pour insister un peu, supposons que le wsdl change, on se dit tiens je change le wsdl dans les tests, ça va me dire ce qui a changé, ce qui ne marche plus, tout ça, non rien, on aura rien, faudra refaire tous les tests à la main qu'on avait fait pendant le développement.
Mis à jour par Serghei Mihai il y a presque 5 ans
- Fichier 0001-astregs-add-initial-connector-33424.patch 0001-astregs-add-initial-connector-33424.patch ajouté
Modification du format de retour des moyens d'apparaige et ajout des WSDL et réponses XML dans les tests.
Mis à jour par Emmanuel Cazenave il y a presque 5 ans
Benjamin Dauvergne a écrit :
Pour insister un peu, supposons que le wsdl change, on se dit tiens je change le wsdl dans les tests, ça va me dire ce qui a changé, ce qui ne marche plus, tout ça, non rien, on aura rien, faudra refaire tous les tests à la main qu'on avait fait pendant le développement.
Tu marques un point (mais je ne m'engages pas).
Mis à jour par Benjamin Dauvergne il y a presque 5 ans
- Statut changé de Solution proposée à Solution validée
Ce serait plus sympa si link et unlink avaient la même signature, pas besoin de passer par un payload pour deux paramètres.
Mis à jour par Serghei Mihai il y a presque 5 ans
- Statut changé de Solution validée à Résolu (à déployer)
Ok pour la même signature pour les 2 endpoints:
commit a6986f15b556fe2c825ca8034399b700aebe00ba (origin/master, origin/HEAD) Author: Serghei Mihai <smihai@entrouvert.com> Date: Tue Jun 11 17:30:31 2019 +0200 astregs: add initial connector (#33424)
Mis à jour par Frédéric Péters il y a presque 5 ans
- Statut changé de Résolu (à déployer) à Solution déployée
astregs: add initial connector (#33424)