Projet

Général

Profil

Development #33424

developper le connecteur AstreGS

Ajouté par Serghei Mihai il y a presque 5 ans. Mis à jour il y a presque 5 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Version cible:
-
Début:
27 mai 2019
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:
Non

Description

Specs fonctionnelles et la doc fournies dans https://dev.entrouvert.org/projects/alpes-maritimes/wiki/_Subventions_


Fichiers

Révisions associées

Révision a6986f15 (diff)
Ajouté par Serghei Mihai il y a presque 5 ans

astregs: add initial connector (#33424)

Historique

#4

Mis à jour par Serghei Mihai il y a presque 5 ans

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.

#5

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.

#6

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 ?

#8

Mis à jour par Serghei Mihai il y a presque 5 ans

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.

#9

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) ?

#10

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')]

#12

Mis à jour par Benjamin Dauvergne il y a presque 5 ans

Ok je vois on peut modifier le comportement de getmembers on surchargeant dir().

#13

Mis à jour par Serghei Mihai il y a presque 5 ans

zeep.helpers.serialize_object fait très bien l'affaire.

#14

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).

#15

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.

#16

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.

#18

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.

#19

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).

#20

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.

#21

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).

#22

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.

#23

Mis à jour par Serghei Mihai il y a presque 5 ans

Modification du format de retour des moyens d'apparaige et ajout des WSDL et réponses XML dans les tests.

#24

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).

#26

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.

#27

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)

#28

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

Formats disponibles : Atom PDF