From 9c7cbf5ae9e47650c869aa3766b1c192341ab2f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89lie=20Bouttier?= Date: Sat, 16 Dec 2017 16:43:45 +0100 Subject: [PATCH] one mail per speaker from talks list --- cfp/forms.py | 12 ++- cfp/views.py | 13 ++- locale/fr/LC_MESSAGES/django.mo | Bin 29518 -> 29223 bytes locale/fr/LC_MESSAGES/django.po | 151 +++++++++++++++++--------------- 4 files changed, 99 insertions(+), 77 deletions(-) diff --git a/cfp/forms.py b/cfp/forms.py index 9164250..ead8095 100644 --- a/cfp/forms.py +++ b/cfp/forms.py @@ -178,12 +178,20 @@ class TalkFilterForm(forms.Form): class TalkActionForm(forms.Form): + EMAIL_TALKS = 1 + EMAIL_SPEAKERS = 2 + EMAIL_CHOICES = ( + (None, "---------"), + (EMAIL_TALKS, _('one per speaker and talk combination')), + (EMAIL_SPEAKERS, _('only one per speaker')), + ) + talks = forms.MultipleChoiceField(choices=[]) decision = forms.NullBooleanField(label=_('Accept talk?')) track = forms.ChoiceField(required=False, choices=[], label=_('Assign to a track')) tag = forms.ChoiceField(required=False, choices=[], label=_('Add a tag')) room = forms.ChoiceField(required=False, choices=[], label=_('Put in a room')) - email = forms.BooleanField(required=False, label=_('Send a email')) + email = forms.ChoiceField(required=False, choices=EMAIL_CHOICES, label=_('Send an email')) def __init__(self, *args, **kwargs): site = kwargs.pop('site') @@ -200,7 +208,7 @@ class TalkActionForm(forms.Form): class SpeakerActionForm(forms.Form): speakers = forms.MultipleChoiceField(choices=[]) - email = forms.BooleanField(required=False, label=_('Send a email')) + email = forms.BooleanField(required=False, label=_('Send an email')) def __init__(self, *args, **kwargs): speakers = kwargs.pop('speakers') diff --git a/cfp/views.py b/cfp/views.py index 05dd44d..25e0244 100644 --- a/cfp/views.py +++ b/cfp/views.py @@ -645,9 +645,16 @@ def talk_list(request): if data['room']: talk.room = Room.objects.get(site=request.conference.site, slug=data['room']) talk.save() - if data['email']: - request.session['talk-email-list'] = data['talks'] - return redirect(reverse('talk-email')) + email = int(data['email']) + if email: + if email == TalkActionForm.EMAIL_TALKS: + request.session['talk-email-list'] = data['talks'] + return redirect(reverse('talk-email')) + elif email == TalkActionForm.EMAIL_SPEAKERS: + selected_talks = Talk.objects.filter(pk__in=data['talks']) + speakers = Participant.objects.filter(pk__in=selected_talks.values('speakers__pk')).distinct() + request.session['speaker-email-list'] = list(speakers.values_list('pk', flat=True)) + return redirect(reverse('speaker-email')) return redirect(request.get_full_path()) # Sorting if request.GET.get('order') == 'desc': diff --git a/locale/fr/LC_MESSAGES/django.mo b/locale/fr/LC_MESSAGES/django.mo index 27814ce4f4131206074bc099173f646cdc9fe15f..0a9a694a5ea8f6317e41a9af6ad869ae87dfc2cc 100644 GIT binary patch delta 7649 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 delta 7469 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 1);\n" -"X-Generator: Poedit 2.0.4\n" +"X-Generator: Poedit 2.0.5\n" #: accounts/forms.py:20 msgid "Email address" @@ -124,7 +124,7 @@ msgstr "Corps :" msgid "Pending decision" msgstr "Décision en attente" -#: cfp/forms.py:19 cfp/forms.py:126 cfp/forms.py:234 +#: cfp/forms.py:19 cfp/forms.py:126 cfp/forms.py:242 msgid "Accepted" msgstr "Accepté" @@ -136,7 +136,7 @@ msgstr "Décliné" msgid "Waiting" msgstr "En attente" -#: cfp/forms.py:30 cfp/forms.py:132 cfp/forms.py:240 cfp/models.py:379 +#: cfp/forms.py:30 cfp/forms.py:132 cfp/forms.py:248 cfp/models.py:379 msgid "Confirmed" msgstr "Confirmé" @@ -158,7 +158,7 @@ msgstr "Aucune" msgid "Default duration: %(duration)d min" msgstr "Durée par défaut : %(duration)d min" -#: cfp/forms.py:108 cfp/forms.py:120 cfp/forms.py:228 +#: cfp/forms.py:108 cfp/forms.py:120 cfp/forms.py:236 #: cfp/templates/cfp/staff/talk_details.html:15 msgid "Category" msgstr "Catégorie" @@ -184,7 +184,7 @@ msgstr "Notes" msgid "Visible by speakers" msgstr "Visible par les orateurs" -#: cfp/forms.py:138 cfp/forms.py:246 cfp/models.py:335 +#: cfp/forms.py:138 cfp/forms.py:254 cfp/models.py:335 #: cfp/templates/cfp/staff/talk_details.html:21 #: cfp/templates/cfp/staff/talk_list.html:58 #: cfp/templates/cfp/staff/track_form.html:14 @@ -241,52 +241,60 @@ msgstr "Vidéo" msgid "Filter talks with / without video" msgstr "Filtrer les exposés avec / sans vidéo" -#: cfp/forms.py:176 cfp/forms.py:258 +#: cfp/forms.py:176 cfp/forms.py:266 msgid "Not assigned" msgstr "Pas encore assignée" -#: cfp/forms.py:182 +#: cfp/forms.py:185 +msgid "one per speaker and talk combination" +msgstr "un pour chaque couple intervenant / exposé" + +#: cfp/forms.py:186 +msgid "only one per speaker" +msgstr "uniquement un par intervenant" + +#: cfp/forms.py:190 msgid "Accept talk?" msgstr "Accepter la proposition ?" -#: cfp/forms.py:183 +#: cfp/forms.py:191 msgid "Assign to a track" msgstr "Assigner à une session" -#: cfp/forms.py:184 cfp/templates/cfp/admin/tag_list.html:11 +#: cfp/forms.py:192 cfp/templates/cfp/admin/tag_list.html:11 msgid "Add a tag" msgstr "Ajouter une étiquette" -#: cfp/forms.py:185 +#: cfp/forms.py:193 msgid "Put in a room" msgstr "Assigner à une salle" -#: cfp/forms.py:186 cfp/forms.py:203 -msgid "Send a email" +#: cfp/forms.py:194 cfp/forms.py:211 +msgid "Send an email" msgstr "Envoyer un e-mail" -#: cfp/forms.py:212 +#: cfp/forms.py:220 msgid "Notify by mail?" msgstr "Notifier par e-mail ?" -#: cfp/forms.py:262 cfp/models.py:486 +#: cfp/forms.py:270 cfp/models.py:486 #: cfp/templates/cfp/staff/volunteer_list.html:30 msgid "Email" msgstr "E-mail" -#: cfp/forms.py:268 cfp/forms.py:274 +#: cfp/forms.py:276 cfp/forms.py:282 msgid "Subject" msgstr "Sujet" -#: cfp/forms.py:269 cfp/forms.py:275 +#: cfp/forms.py:277 cfp/forms.py:283 msgid "Body" msgstr "Corps" -#: cfp/forms.py:281 cfp/forms.py:309 +#: cfp/forms.py:289 cfp/forms.py:317 msgid "I read my self twice, confirm sending" msgstr "Je me suis relu 2 fois, confirmer l’envoi" -#: cfp/forms.py:301 +#: cfp/forms.py:309 #, python-format msgid "" "Your template does not compile (at least) with talk '%(talk)s' and speaker " @@ -295,23 +303,23 @@ msgstr "" "Vos gabarits ne compile pas avec (au moins) l’exposé « %(talk)s » et " "l’intervenant « %(speaker)s »." -#: cfp/forms.py:328 +#: cfp/forms.py:336 #, python-format msgid "Your template does not compile (at least) with speaker '%(speaker)s'." msgstr "" "Vos gabarits ne compile pas avec (au moins) l’intervenant « %(speaker)s »." -#: cfp/forms.py:349 +#: cfp/forms.py:357 msgid "New staff members will be informed of their new position by e-mail." msgstr "" "Les nouveaux membres du staff seront informés de leur nouveau rôle par " "courrier électronique." -#: cfp/forms.py:375 +#: cfp/forms.py:383 msgid "An user with that firstname and that lastname already exists." msgstr "Un utilisateur avec ce prénom et ce nom existe déjà." -#: cfp/forms.py:380 +#: cfp/forms.py:388 msgid "A user with that email already exists." msgstr "Un utilisateur avec cet email existe déjà." @@ -648,35 +656,6 @@ msgstr "" "Si vous avez déjà soumis une proposition et que vous souhaitez l’éditer, " "cliquez ici." -#: cfp/templates/cfp/mails/speaker_send_token.txt:1 -msgid "" -"Hi {},\n" -"\n" -"Someone, probably you, ask to access your profile.\n" -"You can edit your talks or add new ones following this url:\n" -"\n" -" {}\n" -"\n" -"If you have any question, your can answer to this email.\n" -"\n" -"Sincerely,\n" -"\n" -"{}\n" -msgstr "" -"Bonjour {},\n" -"\n" -"Quelqu’un, sans doute vous, a demandé à accéder à votre profil.\n" -"Vous pouvez modifier vos propositions ou en soumettre de nouvelles à l’url " -"suivante :\n" -"\n" -" {}\n" -"\n" -"Si vous avez une question, vous pouvez répondre à ce mail.\n" -"\n" -"Sincèrement,\n" -"\n" -"{}\n" - #: cfp/templates/cfp/mails/volunteer_send_token.txt:1 #, python-format msgid "" @@ -804,7 +783,7 @@ msgid "you must confirm you participation" msgstr "vous devez confirmer votre participation" #: cfp/templates/cfp/proposal_dashboard.html:61 cfp/views.py:626 -#: cfp/views.py:751 +#: cfp/views.py:758 msgid "accepted" msgstr "accepté" @@ -1638,69 +1617,69 @@ msgstr "L’exposé a été %(action)s." msgid "[%(conference)s] The talk '%(talk)s' have been %(action)s." msgstr "[%(conference)s] L’exposé « %(talk)s » a été %(action)s." -#: cfp/views.py:628 cfp/views.py:753 +#: cfp/views.py:628 cfp/views.py:760 msgid "declined" msgstr "décliné" -#: cfp/views.py:629 cfp/views.py:777 +#: cfp/views.py:629 cfp/views.py:784 #, python-format msgid "The talk has been %(action)s." msgstr "L’exposé a été %(action)s." -#: cfp/views.py:633 cfp/views.py:772 +#: cfp/views.py:633 cfp/views.py:779 #, python-format msgid "[%(conference)s] The talk '%(talk)s' have been %(action)s" msgstr "[%(conference)s] L’exposé « %(talk)s » a été %(action)s" -#: cfp/views.py:710 +#: cfp/views.py:717 #, python-format msgid "[%(conference)s] New comment about '%(talk)s'" msgstr "[%(conference)s] Nouveau commentaire sur « %(talk)s »" -#: cfp/views.py:724 cfp/views.py:898 +#: cfp/views.py:731 cfp/views.py:905 msgid "Message sent!" msgstr "Message envoyé !" -#: cfp/views.py:740 +#: cfp/views.py:747 msgid "Vote successfully created" msgstr "A voté !" -#: cfp/views.py:740 +#: cfp/views.py:747 msgid "Vote successfully updated" msgstr "Vote mis à jour" -#: cfp/views.py:761 +#: cfp/views.py:768 #, python-format msgid "[%(conference)s] Your talk '%(talk)s' have been %(action)s" msgstr "[%(conference)s] Votre exposé « %(talk)s » a été %(action)s" -#: cfp/views.py:779 +#: cfp/views.py:786 msgid "Decision taken in account" msgstr "Décision enregistrée" -#: cfp/views.py:792 +#: cfp/views.py:799 msgid "Please select some talks." msgstr "Veuillez sélectionner un ou plusieurs exposés." -#: cfp/views.py:801 cfp/views.py:969 +#: cfp/views.py:808 cfp/views.py:976 #, python-format msgid "%(count)d mails have been sent." msgstr "%(count)d e-mails ont été envoyés." -#: cfp/views.py:805 cfp/views.py:973 +#: cfp/views.py:812 cfp/views.py:980 #, python-format msgid "Your ready to send %(count)d emails." msgstr "Vous êtes prêt pour envoyer %(count)d e-mails." -#: cfp/views.py:960 +#: cfp/views.py:967 msgid "Please select some speakers." msgstr "Veuillez sélectionner un ou plusieurs intervenants." -#: cfp/views.py:1005 +#: cfp/views.py:1012 msgid "[{}] You have been added to the staff team" msgstr "[{}] Vous avez été ajouté aux membres du staff" -#: cfp/views.py:1006 +#: cfp/views.py:1013 msgid "" "Hi {},\n" "\n" @@ -1724,15 +1703,15 @@ msgstr "" "{}\n" "\n" -#: cfp/views.py:1027 cfp/views.py:1039 +#: cfp/views.py:1034 cfp/views.py:1046 msgid "Modifications successfully saved." msgstr "Modification enregistrée avec succès." -#: cfp/views.py:1203 +#: cfp/views.py:1210 msgid "User created successfully." msgstr "Utilisateur créé avec succès." -#: cfp/views.py:1224 +#: cfp/views.py:1231 #, python-format msgid "Format '%s' not available" msgstr "Format '%s' non disponible" @@ -1806,6 +1785,34 @@ msgstr "Mot de passe oublié ?" msgid "Password Change" msgstr "Changement de mot de passe" +#~ msgid "" +#~ "Hi {},\n" +#~ "\n" +#~ "Someone, probably you, ask to access your profile.\n" +#~ "You can edit your talks or add new ones following this url:\n" +#~ "\n" +#~ " {}\n" +#~ "\n" +#~ "If you have any question, your can answer to this email.\n" +#~ "\n" +#~ "Sincerely,\n" +#~ "\n" +#~ "{}\n" +#~ msgstr "" +#~ "Bonjour {},\n" +#~ "\n" +#~ "Quelqu’un, sans doute vous, a demandé à accéder à votre profil.\n" +#~ "Vous pouvez modifier vos propositions ou en soumettre de nouvelles à " +#~ "l’url suivante :\n" +#~ "\n" +#~ " {}\n" +#~ "\n" +#~ "Si vous avez une question, vous pouvez répondre à ce mail.\n" +#~ "\n" +#~ "Sincèrement,\n" +#~ "\n" +#~ "{}\n" + #~ msgid "There is an error in your content template." #~ msgstr "Il y a une erreur dans le gabarit du corps."