Development #45333
intégrer au niveau des connecteurs SMS la possibilité d'un envoi de test
0%
Description
Plutôt qu'avoir ça délégué à w.c.s.
Fichiers
Demandes liées
Révisions associées
sms: add a button to test sending sms (#45333)
Historique
Mis à jour par Nicolas Roche il y a plus de 3 ans
- Lié à Development #34067: test de sms : ça affiche "Le SMS a été envoyé correctement." alors que non ajouté
Mis à jour par Nicolas Roche il y a plus de 3 ans
- Lié à Development #44815: avoir la possibilité d'ajouter un job en lui demandant de s'exécuter tout de suite ajouté
Mis à jour par Nicolas Roche il y a plus de 3 ans
- Fichier 0001-sms-allow-to-send-sms-synchronously-for-testing-pupo.patch 0001-sms-allow-to-send-sms-synchronously-for-testing-pupo.patch ajouté
- Statut changé de Nouveau à Solution proposée
- Patch proposed changé de Non à Oui
Patch qui reprend de l'ancien code avant le passage aux envois asynchrone : https://dev.entrouvert.org/issues/21465
Mis à jour par Frédéric Péters il y a plus de 3 ans
L'objectif ici n'est pas d'avoir un endpoint d'envoi synchrone.
Il s'agit d'avoir un bouton "Tester l’envoi" qui ouvre une popup et permette à l'admin de taper un numéro de destination et un texte puis de valider le formulaire, l'envoi se fait et la page s'affiche avec l'info "un envoi vient d'être fait" (django.contrib.messages).
Mis à jour par Nicolas Roche il y a plus de 3 ans
- Statut changé de Solution proposée à Nouveau
(compris)
Mis à jour par Nicolas Roche il y a plus de 3 ans
- Lié à Development #34067: test de sms : ça affiche "Le SMS a été envoyé correctement." alors que non supprimé
Mis à jour par Nicolas Roche il y a plus de 3 ans
- Lié à Development #44815: avoir la possibilité d'ajouter un job en lui demandant de s'exécuter tout de suite supprimé
Mis à jour par Nicolas Roche il y a plus de 3 ans
- Fichier 0001-sms-add-a-button-to-test-sending-sms-45333.patch 0001-sms-add-a-button-to-test-sending-sms-45333.patch ajouté
- Patch proposed changé de Oui à Non
- uniformiser l'utilisation du template
messages_services_views
pour tous les connecteurs SMS - le déplacer dans
/sms/template
- ajouter le lien vers une popup dedans
- ajouter des fichiers
urls.py
,views.py
etforms.py
dans /sms - bidouiller
base/__init__.py
pour charger sms/urls.py sur les connecteurs SMS - bidouiller une fonction
get_instance()
dans la vue pour retrouver l'objet connecteur
- permettre d'appeler le endpoint de façon synchrone
- ajouter mon formulaire directement dans le template
messages_services_views
- faire en sorte que le formulaire envoie ses paramètres en JSON sur le endpoint
Bref, je préfère passer mon chemin pour le moment quitte à revenir plus tard.
Mis à jour par Nicolas Roche il y a plus de 3 ans
- Lié à Development #45814: Appliquer par defaut le template message_service_views aux connecteurs SMS ajouté
Mis à jour par Nicolas Roche il y a plus de 3 ans
- Lié à Development #45815: Déplacer le template message_service_view dans le répertoire SMS ajouté
Mis à jour par Nicolas Roche il y a plus de 3 ans
- Lié à Development #45816: Exclure les attributs sensibles des champs décrivants les connecteurs SMS ajouté
Mis à jour par Nicolas Roche il y a plus de 3 ans
- Lié à Development #45817: Afficher les attributs des connecteurs SMS dans le template message_service_view ajouté
Mis à jour par Nicolas Roche il y a plus de 3 ans
- Lié à Development #45829: Ajouter une description au endpoint send des connecteurs SMS ajouté
Mis à jour par Nicolas Roche il y a plus de 3 ans
- Lié à Development #46611: Permettre de charger les fichiers urls depuis une application commune, tout en gardant les fonctionnalités liées aux connecteurs qui dérivent de cette application. ajouté
Mis à jour par Nicolas Roche il y a plus de 3 ans
- Fichier 0001-sms-add-a-button-to-test-sending-sms-45333.patch 0001-sms-add-a-button-to-test-sending-sms-45333.patch ajouté
- Statut changé de Nouveau à Solution proposée
- Patch proposed changé de Non à Oui
Un bouton (oups, un lien en fait) "Tester l’envoi" qui ouvre une popup.
Mis à jour par Valentin Deniaud il y a plus de 3 ans
get_instance ne peut pas fonctionner comme ça (capitalize()), il faut utiliser GenericConnectorMixin qui te donne self.model. Par contre le formulaire ne doit pas être écrasé, donc il faut patcher le mixin avec genre
- self.form_class = self.model.get_manager_form_class(exclude=self.exclude_fields) + if not hasattr(self, 'form_class'): + self.form_class = self.model.get_manager_form_class(exclude=self.exclude_fields)
L'appel à send_sms n'est pas le même que celui qui est fait par l'envoi normal via BaseSMSResource, il manque le paramètre stop. Ça fait crasher l'envoi avec le connecteur OVH par ex, qui fait un kwargs['stop'] (le test passe parce que tu mock la fonction d'envoi). Bref, juste ajouter un stop=False.
À l'usage, j'aurais aimé avoir un bouton « Resend test message », parce que remplir le formulaire de test, valider l'envoi, voir que ça ne marche pas, corriger, remplir le formulaire de test avec les mêmes infos, valider l'envoi, etc, c'est un peu relou.
Genre au moment de la redirection vers instance.get_absolute_url(), ajouter des paramètres d'URL correspondant à ceux du formulaire, puis sur la page du connecteur avoir un formulaire vers SmsTestSendView avec que des champs cachés ayant pour valeur request.GET.<champ>, et le bouton de soumission qui s'appelle « Resend test message ». Je te laisse voir si c'est faisable, sinon pas grave.
Mis à jour par Nicolas Roche il y a plus de 3 ans
- Fichier 0001-sms-add-a-button-to-test-sending-sms-45333.patch 0001-sms-add-a-button-to-test-sending-sms-45333.patch ajouté
get_instance ne peut pas fonctionner comme ça (capitalize()), il faut utiliser GenericConnectorMixin qui te donne self.model.
merci. J'ai dû surcharger init_stuff (avec le patch du mixin proposé les tests plantent sur le connecteur CSV).
L'appel à send_sms n'est pas le même que celui qui est fait par l'envoi normal via BaseSMSResource, il manque le paramètre stop. Ça fait crasher l'envoi avec le connecteur OVH par ex. Bref, juste ajouter un stop=False.
merci, je n'avais pas détecté le soucis en m'envoyant les SMS avec twilio.
if not kwargs['stop']: # yep, crash ici params.update({'noStop': 1}) # yep, je met stop=False
rq: https://dev.entrouvert.org/issues/47034#note-1
noStop: 1 pour ne pas afficher "STOP au XXXXX" à la fin du message pour un SMS à caractère non commercial
À l'usage, j'aurais aimé avoir un bouton « Resend test message », parce que remplir le formulaire de test, valider l'envoi, voir que ça ne marche pas, corriger, remplir le formulaire de test avec les mêmes infos, valider l'envoi, etc, c'est un peu relou.
Moi je veux bien, mais c'est pas un peu over-engenering (le navigateur se souvient des valeurs, ça fait 7 clics) ?
Mis à jour par Valentin Deniaud il y a plus de 3 ans
Nicolas Roche a écrit :
get_instance ne peut pas fonctionner comme ça (capitalize()), il faut utiliser GenericConnectorMixin qui te donne self.model.
merci. J'ai dû surcharger init_stuff (avec le patch du mixin proposé les tests plantent sur le connecteur CSV).
Et si tu essayais d'ajouter get_form_class à GenericConnectorMixin, à la place d'affecter un self.form_class autoritaire, et ensuite surcharger cette nouvelle méthode dans SmsTestSendView, ça permettrait de remettre ce bazar dans les clous de django (https://docs.djangoproject.com/en/3.1/ref/class-based-views/mixins-editing/#django.views.generic.edit.FormMixin.get_form_class).
Mis à jour par Nicolas Roche il y a plus de 3 ans
- Fichier 0001-sms-add-a-button-to-test-sending-sms-45333.patch 0001-sms-add-a-button-to-test-sending-sms-45333.patch ajouté
Oui, je ne voulais pas toucher au code du Mixin mais c'est plus propre.
Mis à jour par Valentin Deniaud il y a plus de 3 ans
Tu dois pouvoir enlever l'affectation explicite de self.form_class dans le mixin, et en fait pas besoin de surcharger get_form_class dans le formulaire SMS, l'attribut statique devrait suffire (le problème initial étant qu'il était écrasé par la précédente affectation).
Mis à jour par Nicolas Roche il y a plus de 3 ans
- Fichier 0002-sms-add-a-button-to-test-sending-sms-45333.patch 0002-sms-add-a-button-to-test-sending-sms-45333.patch ajouté
- Fichier 0001-views-explicitly-get-form_class-from-generic-connect.patch 0001-views-explicitly-get-form_class-from-generic-connect.patch ajouté
Oui et non.
Tu dois pouvoir enlever l'affectation explicite de self.form_class dans le mixin
oui à condition de remplacer l'endroit où cette affectation est utilisée (dans GenericConnectorView) -> 0001
et en fait pas besoin de surcharger get_form_class dans le formulaire SMS, l'attribut statique devrait suffire
non, il faut de toute façon redéfinir get_form_class car elle est appelée par le FormMixin de django.
Mis à jour par Valentin Deniaud il y a plus de 3 ans
- Statut changé de Solution proposée à Solution validée
Mis à jour par Nicolas Roche il y a plus de 3 ans
- Statut changé de Solution validée à Résolu (à déployer)
commit 257334fdc5354773797297eb69ece1ffaac332bb Author: Nicolas ROCHE <nroche@entrouvert.com> Date: Wed Sep 16 16:23:49 2020 +0200 sms: add a button to test sending sms (#45333) commit 6ff2dc4365c8511e083ee6c16ee6b91ea691224a Author: Nicolas ROCHE <nroche@entrouvert.com> Date: Thu Oct 15 14:52:35 2020 +0200 views: explicitly get form_class from generic connector mixin (#45333)
Mis à jour par Frédéric Péters il y a plus de 3 ans
- Statut changé de Résolu (à déployer) à Solution déployée
views: explicitly get form_class from generic connector mixin (#45333)