Il faut réécrire la commande qui envoie les mails de BdA revente #195

Open
opened 2018-06-28 14:51:08 +02:00 by mpepin · 8 comments
mpepin commented 2018-06-28 14:51:08 +02:00 (Migrated from git.eleves.ens.fr)

Il envoie les mails un par un, c'est beaucoup trop lent, il faut le faire en une seule connexion.

Comment faire ?

  • Trouver la commande (Django stocke les commandes dans <app_name>/management/commands/ et comprendre le fonctionnement actuel du schmilblick.
  • Lire les différences entre les fonctions fournies par Django send_mail et send_mass_mail et leur utilisation, expliquée au-dessus.
  • Refactoriser le code pour permettre l'utilisation de cette seconde commande avec tous les Show
  • Important : Nous utilisons django_custommail, un petit wrapper qui permet de modifier les templates des mails envoyés par GestioCOF via l'administration du site.
    On préférera donc utiliser from custommail.shortcuts import send_mass_custom_mail, qui fournit une interface similaire.
    Pour savoir comment l'utiliser, regardez son code source, ou chercher ailleurs son utilisation dans GestioCOF (git grep -10 send_mass_custom_mail par exemple).
  • Soumettre la PR, même non terminée (en WIP). On peut aider ;-)

Edit (Aurélien) : Ajout de la section Comment faire ?

Il envoie les mails un par un, c'est beaucoup trop lent, il faut le faire en une seule connexion. ### Comment faire ? - Trouver la commande (Django stocke les commandes dans `<app_name>/management/commands/` et comprendre le fonctionnement actuel du schmilblick. - Lire les différences entre les fonctions fournies par Django [send_mail et send_mass_mail](https://docs.djangoproject.com/fr/2.1/topics/email/#send-mass-mail-vs-send-mail) et leur utilisation, expliquée au-dessus. - Refactoriser le code pour permettre l'utilisation de cette seconde commande **avec tous les `Show`** - _Important :_ Nous utilisons [django_custommail](https://git.eleves.ens.fr/cof-geek/django_custommail), un petit wrapper qui permet de modifier les templates des mails envoyés par GestioCOF via l'administration du site. On préférera donc utiliser `from custommail.shortcuts import send_mass_custom_mail`, qui fournit une interface similaire. Pour savoir comment l'utiliser, regardez [son code source](https://git.eleves.ens.fr/cof-geek/django_custommail/blob/master/custommail/shortcuts.py#L43), ou chercher ailleurs son utilisation dans GestioCOF (`git grep -10 send_mass_custom_mail` par exemple). - Soumettre la PR, même non terminée (en WIP). On peut aider ;-) **Edit (Aurélien) :** Ajout de la section Comment faire ?
mpepin commented 2018-06-28 14:51:37 +02:00 (Migrated from git.eleves.ens.fr)

changed title from Il faut réécrire la command qui envoie les mails de BdA revente to Il faut réécrire la command{+e+} qui envoie les mails de BdA revente

changed title from **Il faut réécrire la command qui envoie les mails de BdA revente** to **Il faut réécrire la command{+e+} qui envoie les mails de BdA revente**
delobell commented 2018-10-01 01:21:58 +02:00 (Migrated from git.eleves.ens.fr)

changed the description

changed the description
delobell commented 2018-10-01 01:24:59 +02:00 (Migrated from git.eleves.ens.fr)

J'ai ajouté des choses à la description.

Petite question quand même : tu parlais bien de la connexion mail ? Ou on fait trop d'appels à la DB ?
La seconde option paraît bien plausible à vrai dire...

J'ai ajouté des choses à la description. Petite question quand même : tu parlais bien de la connexion mail ? Ou on fait trop d'appels à la DB ? La seconde option paraît bien plausible à vrai dire...
mpepin commented 2018-10-04 16:24:22 +02:00 (Migrated from git.eleves.ens.fr)

Je parle bien de la connexion au serveur de mail. Ça rend le truc vraiment très très lent

Je parle bien de la connexion au serveur de mail. Ça rend le truc vraiment très très lent
lstephan commented 2018-10-05 23:17:07 +02:00 (Migrated from git.eleves.ens.fr)

assigned to @lstephan

assigned to @lstephan
lstephan commented 2018-10-06 21:52:09 +02:00 (Migrated from git.eleves.ens.fr)

Il est probable que ça demande une PR sur django_custommail (la fonction send_mass_custom_mail ne supporte pas de champ reply-to), je vais y jeter un oeil :)

Il est probable que ça demande une PR sur `django_custommail` (la fonction `send_mass_custom_mail` ne supporte pas de champ `reply-to`), je vais y jeter un oeil :)
delobell commented 2018-10-06 21:58:09 +02:00 (Migrated from git.eleves.ens.fr)

Je me demande si le send_mass_mail de django supporte le reply-to en fait (pas vérifié, suis dans le bus).
Mais sinon t'as moyen d'utiliser la classe de custommail équivalente à celle de django EmailMessage.
Tu peux alors créer ses instances puis récupérer une connexion pour tout envoyer d'un coup en principe.

Je me demande si le send_mass_mail de django supporte le reply-to en fait (pas vérifié, suis dans le bus). Mais sinon t'as moyen d'utiliser la classe de custommail équivalente à celle de django EmailMessage. Tu peux alors créer ses instances puis récupérer une connexion pour tout envoyer d'un coup en principe.
lstephan commented 2018-10-06 22:03:30 +02:00 (Migrated from git.eleves.ens.fr)

Malheureusement non, il faut effectivement remonter un cran plus haut pour ça... J'ai effectivement 2 options : soit je ne gère que des EmailMessage (via get_message de custommail) et je fais ça à la main dans la commande, soit je rework send_mass_custom_mail (et send_custom_mail) pour faire ça directement. J'étais parti pour la 2e option, mais les 2 ont leurs avantages et inconvénients.

Malheureusement non, il faut effectivement remonter un cran plus haut pour ça... J'ai effectivement 2 options : soit je ne gère que des `EmailMessage` (via `get_message` de custommail) et je fais ça à la main dans la commande, soit je rework `send_mass_custom_mail` (et `send_custom_mail`) pour faire ça directement. J'étais parti pour la 2e option, mais les 2 ont leurs avantages et inconvénients.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
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: DGNum/gestioCOF#195
No description provided.