participant edits by staff

This commit is contained in:
Élie Bouttier 2017-08-12 00:50:42 +02:00
parent af143a4fe3
commit a7d7129f6f
9 changed files with 119 additions and 89 deletions

View File

@ -90,7 +90,14 @@ class TalkFilterForm(forms.Form):
self.fields['track'].choices = [('none', _('Not assigned'))] + list(tracks.values_list('slug', 'name')) self.fields['track'].choices = [('none', _('Not assigned'))] + list(tracks.values_list('slug', 'name'))
ParticipantForm = modelform_factory(Participant, fields=('name','email', 'biography')) ParticipantForm = modelform_factory(Participant, fields=('name', 'email', 'biography'))
class ParticipantStaffForm(ParticipantForm):
class Meta(ParticipantForm.Meta):
labels = {
'name': _('Name'),
}
class UsersWidget(ModelSelect2MultipleWidget): class UsersWidget(ModelSelect2MultipleWidget):

View File

@ -6,3 +6,8 @@ from .utils import is_staff
class StaffRequiredMixin(UserPassesTestMixin): class StaffRequiredMixin(UserPassesTestMixin):
def test_func(self): def test_func(self):
return is_staff(self.request, self.request.user) return is_staff(self.request, self.request.user)
class OnSiteMixin:
def get_queryset(self):
return super().get_queryset().filter(site=self.kwargs['conference'].site)

View File

@ -105,6 +105,9 @@ class Participant(PonyConfModel):
objects = ParticipantManager() objects = ParticipantManager()
def get_absolute_url(self):
return reverse('participant-details', kwargs={'participant_id': self.token})
class Meta: class Meta:
# A User can participe only once to a Conference (= Site) # A User can participe only once to a Conference (= Site)
unique_together = ('site', 'email') unique_together = ('site', 'email')

View File

@ -7,6 +7,8 @@
<h1>{{ participant }}</h1> <h1>{{ participant }}</h1>
<p><a class="btn btn-success" href="{% url 'participant-edit' participant.token %}">{% trans "Edit" %}</a></p>
<h2>{% trans "Biography" %}</h2> <h2>{% trans "Biography" %}</h2>
<p>{{ participant.biography|linebreaksbr }}</p> <p>{{ participant.biography|linebreaksbr }}</p>

View File

@ -0,0 +1,13 @@
{% extends 'cfp/staff/base.html' %}
{% load i18n crispy_forms_tags %}
{% block speakerstab %} class="active"{% endblock %}
{% block content %}
<h1>{% trans "Edit a speaker" %}</h1>
{% url 'participant-details' participant.token as cancel_url %}
{% include '_form.html' %}
{% endblock %}

View File

@ -15,9 +15,10 @@ urlpatterns = [
url(r'^staff/talks/(?P<talk_id>[\w\-]+)/vote/(?P<score>[-+0-2]+)/$', views.talk_vote, name='talk-vote'), url(r'^staff/talks/(?P<talk_id>[\w\-]+)/vote/(?P<score>[-+0-2]+)/$', views.talk_vote, name='talk-vote'),
url(r'^staff/talks/(?P<talk_id>[\w\-]+)/accept/$', views.talk_decide, {'accept': True}, name='talk-accept'), url(r'^staff/talks/(?P<talk_id>[\w\-]+)/accept/$', views.talk_decide, {'accept': True}, name='talk-accept'),
url(r'^staff/talks/(?P<talk_id>[\w\-]+)/decline/$', views.talk_decide, {'accept': False}, name='talk-decline'), url(r'^staff/talks/(?P<talk_id>[\w\-]+)/decline/$', views.talk_decide, {'accept': False}, name='talk-decline'),
url(r'^staff/talks/(?P<talk_id>[\w\-]+)/edit/$', views.TalkEdit.as_view(), name='talk-edit'), url(r'^staff/talks/(?P<talk_id>[\w\-]+)/edit/$', views.TalkUpdate.as_view(), name='talk-edit'),
url(r'^staff/speakers/$', views.participant_list, name='participant-list'), url(r'^staff/speakers/$', views.participant_list, name='participant-list'),
url(r'^staff/speakers/(?P<participant_id>[\w\-]+)/$', views.participant_details, name='participant-details'), url(r'^staff/speakers/(?P<participant_id>[\w\-]+)/$', views.participant_details, name='participant-details'),
url(r'^staff/speakers/(?P<participant_id>[\w\-]+)/edit/$', views.ParticipantUpdate.as_view(), name='participant-edit'),
url(r'^staff/tracks/$', views.TrackList.as_view(), name='track-list'), url(r'^staff/tracks/$', views.TrackList.as_view(), name='track-list'),
url(r'^staff/tracks/add/$', views.TrackCreate.as_view(), name='track-add'), url(r'^staff/tracks/add/$', views.TrackCreate.as_view(), name='track-add'),
url(r'^staff/tracks/(?P<slug>[-\w]+)/edit/$', views.TrackUpdate.as_view(), name='track-edit'), url(r'^staff/tracks/(?P<slug>[-\w]+)/edit/$', views.TrackUpdate.as_view(), name='track-edit'),

View File

@ -15,10 +15,10 @@ from functools import reduce
from mailing.models import Message from mailing.models import Message
from mailing.forms import MessageForm from mailing.forms import MessageForm
from .decorators import staff_required from .decorators import staff_required
from .mixins import StaffRequiredMixin from .mixins import StaffRequiredMixin, OnSiteMixin
from .utils import is_staff from .utils import is_staff
from .models import Participant, Talk, TalkCategory, Vote, Track from .models import Participant, Talk, TalkCategory, Vote, Track
from .forms import TalkForm, TalkStaffForm, TalkFilterForm, ParticipantForm, ConferenceForm, CreateUserForm, STATUS_VALUES, TrackForm from .forms import TalkForm, TalkStaffForm, TalkFilterForm, ParticipantForm, ParticipantStaffForm, ConferenceForm, CreateUserForm, STATUS_VALUES, TrackForm
def home(request, conference): def home(request, conference):
@ -282,6 +282,14 @@ def participant_details(request, conference, participant_id):
}) })
class ParticipantUpdate(StaffRequiredMixin, OnSiteMixin, UpdateView):
model = Participant
slug_field = 'token'
slug_url_kwarg = 'participant_id'
form_class = ParticipantStaffForm
template_name = 'cfp/staff/participant_form.html'
@staff_required @staff_required
def conference(request, conference): def conference(request, conference):
form = ConferenceForm(request.POST or None, instance=conference) form = ConferenceForm(request.POST or None, instance=conference)
@ -325,12 +333,7 @@ You can now:
}) })
class OnSiteMixin: class TalkUpdate(StaffRequiredMixin, OnSiteMixin, UpdateView):
def get_queryset(self):
return super().get_queryset().filter(site=self.kwargs['conference'].site)
class TalkEdit(StaffRequiredMixin, OnSiteMixin, UpdateView):
model = Talk model = Talk
slug_field = 'token' slug_field = 'token'
slug_url_kwarg = 'talk_id' slug_url_kwarg = 'talk_id'

Binary file not shown.

View File

@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-08-11 21:21+0000\n" "POT-Creation-Date: 2017-08-11 22:51+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@ -95,19 +95,20 @@ msgid "Contact"
msgstr "Contacter" msgstr "Contacter"
#: accounts/templates/accounts/participant_details.html:15 #: accounts/templates/accounts/participant_details.html:15
#: cfp/templates/cfp/staff/participant_details.html:10
#: cfp/templates/cfp/staff/talk_details.html:10 #: cfp/templates/cfp/staff/talk_details.html:10
#: proposals/templates/proposals/talk_detail.html:16 #: proposals/templates/proposals/talk_detail.html:16
msgid "Edit" msgid "Edit"
msgstr "Éditer" msgstr "Éditer"
#: accounts/templates/accounts/participant_details.html:20 cfp/models.py:86 #: accounts/templates/accounts/participant_details.html:20 cfp/models.py:86
#: cfp/templates/cfp/staff/participant_details.html:10 #: cfp/templates/cfp/staff/participant_details.html:12
msgid "Biography" msgid "Biography"
msgstr "Biographie" msgstr "Biographie"
#: accounts/templates/accounts/participant_details.html:27 #: accounts/templates/accounts/participant_details.html:27
#: cfp/templates/cfp/staff/base.html:18 #: cfp/templates/cfp/staff/base.html:18
#: cfp/templates/cfp/staff/participant_details.html:31 #: cfp/templates/cfp/staff/participant_details.html:33
#: cfp/templates/cfp/staff/talk_list.html:8 #: cfp/templates/cfp/staff/talk_list.html:8
#: proposals/templates/proposals/talk_list.html:9 #: proposals/templates/proposals/talk_list.html:9
msgid "Talks" msgid "Talks"
@ -174,7 +175,7 @@ msgid "Constraints"
msgstr "Contraintes" msgstr "Contraintes"
#: accounts/templates/accounts/participant_details.html:71 cfp/forms.py:53 #: accounts/templates/accounts/participant_details.html:71 cfp/forms.py:53
#: cfp/models.py:100 cfp/templates/cfp/staff/participant_details.html:14 #: cfp/models.py:100 cfp/templates/cfp/staff/participant_details.html:16
#: cfp/templates/cfp/staff/talk_details.html:92 proposals/models.py:161 #: cfp/templates/cfp/staff/talk_details.html:92 proposals/models.py:161
#: proposals/templates/proposals/talk_detail.html:102 #: proposals/templates/proposals/talk_detail.html:102
msgid "Notes" msgid "Notes"
@ -194,12 +195,10 @@ msgid "View conversation"
msgstr "Afficher la discussion" msgstr "Afficher la discussion"
#: accounts/templates/accounts/participant_list.html:31 #: accounts/templates/accounts/participant_list.html:31
#: conversations/templates/conversations/correspondent_list.html:27
msgid "Unsubscribe from the conversation" msgid "Unsubscribe from the conversation"
msgstr "Se désabonner de la discussion" msgstr "Se désabonner de la discussion"
#: accounts/templates/accounts/participant_list.html:35 #: accounts/templates/accounts/participant_list.html:35
#: conversations/templates/conversations/correspondent_list.html:29
msgid "Subscribe to the conversation" msgid "Subscribe to the conversation"
msgstr "Sabonner à la discussion" msgstr "Sabonner à la discussion"
@ -312,7 +311,7 @@ msgstr "Catégorie"
msgid "Title" msgid "Title"
msgstr "Titre" msgstr "Titre"
#: cfp/forms.py:52 cfp/models.py:156 #: cfp/forms.py:52 cfp/models.py:159
#: cfp/templates/cfp/staff/talk_details.html:71 proposals/models.py:54 #: cfp/templates/cfp/staff/talk_details.html:71 proposals/models.py:54
#: proposals/models.py:77 proposals/models.py:158 #: proposals/models.py:77 proposals/models.py:158
#: proposals/templates/proposals/talk_detail.html:72 volunteers/models.py:14 #: proposals/templates/proposals/talk_detail.html:72 volunteers/models.py:14
@ -330,7 +329,7 @@ msgstr "Visible par les orateurs"
msgid "Status" msgid "Status"
msgstr "Statut" msgstr "Statut"
#: cfp/forms.py:74 cfp/models.py:258 #: cfp/forms.py:74 cfp/models.py:261
#: cfp/templates/cfp/staff/talk_details.html:85 #: cfp/templates/cfp/staff/talk_details.html:85
#: cfp/templates/cfp/staff/talk_list.html:41 #: cfp/templates/cfp/staff/talk_list.html:41
#: cfp/templates/cfp/staff/track_form.html:14 proposals/models.py:160 #: cfp/templates/cfp/staff/track_form.html:14 proposals/models.py:160
@ -356,17 +355,23 @@ msgstr ""
msgid "Not assigned" msgid "Not assigned"
msgstr "Pas encore assignée." msgstr "Pas encore assignée."
#: cfp/forms.py:109 #: cfp/forms.py:99 cfp/models.py:157
#: cfp/templates/cfp/staff/participant_list.html:49 proposals/models.py:52
#: proposals/models.py:75 proposals/models.py:132 volunteers/models.py:12
msgid "Name"
msgstr "Nom"
#: cfp/forms.py:116
msgid "New staff members will be informed of their new position by e-mail." msgid "New staff members will be informed of their new position by e-mail."
msgstr "" msgstr ""
"Les nouveaux membres du staff seront informés de leur nouveau rôle par " "Les nouveaux membres du staff seront informés de leur nouveau rôle par "
"courrier électronique." "courrier électronique."
#: cfp/forms.py:129 #: cfp/forms.py:136
msgid "An user with that firstname and that lastname already exists." msgid "An user with that firstname and that lastname already exists."
msgstr "Un utilisateur avec ce prénom et ce nom existe déjà." msgstr "Un utilisateur avec ce prénom et ce nom existe déjà."
#: cfp/forms.py:134 #: cfp/forms.py:141
msgid "A user with that email already exists." msgid "A user with that email already exists."
msgstr "Un utilisateur avec cet email existe déjà." msgstr "Un utilisateur avec cet email existe déjà."
@ -419,25 +424,19 @@ msgstr "Votre Nom"
msgid "This field is only visible by organizers." msgid "This field is only visible by organizers."
msgstr "Ce champs est uniquement visible par les organisateurs." msgstr "Ce champs est uniquement visible par les organisateurs."
#: cfp/models.py:154 cfp/templates/cfp/staff/participant_list.html:49 #: cfp/models.py:180 proposals/models.py:96
#: proposals/models.py:52 proposals/models.py:75 proposals/models.py:132
#: volunteers/models.py:12
msgid "Name"
msgstr "Nom"
#: cfp/models.py:177 proposals/models.py:96
msgid "Default duration (min)" msgid "Default duration (min)"
msgstr "Durée par défaut (min)" msgstr "Durée par défaut (min)"
#: cfp/models.py:178 proposals/models.py:97 #: cfp/models.py:181 proposals/models.py:97
msgid "Color on program" msgid "Color on program"
msgstr "Couleur sur le programme" msgstr "Couleur sur le programme"
#: cfp/models.py:179 proposals/models.py:98 #: cfp/models.py:182 proposals/models.py:98
msgid "Label on program" msgid "Label on program"
msgstr "Label dans le xml du programme" msgstr "Label dans le xml du programme"
#: cfp/models.py:253 cfp/templates/cfp/staff/base.html:19 #: cfp/models.py:256 cfp/templates/cfp/staff/base.html:19
#: cfp/templates/cfp/staff/participant_list.html:8 #: cfp/templates/cfp/staff/participant_list.html:8
#: cfp/templates/cfp/staff/talk_details.html:75 #: cfp/templates/cfp/staff/talk_details.html:75
#: cfp/templates/cfp/staff/talk_list.html:40 proposals/models.py:154 #: cfp/templates/cfp/staff/talk_list.html:40 proposals/models.py:154
@ -447,19 +446,19 @@ msgstr "Label dans le xml du programme"
msgid "Speakers" msgid "Speakers"
msgstr "Orateurs" msgstr "Orateurs"
#: cfp/models.py:254 #: cfp/models.py:257
msgid "Talk Title" msgid "Talk Title"
msgstr "Titre de votre proposition:" msgstr "Titre de votre proposition:"
#: cfp/models.py:257 #: cfp/models.py:260
msgid "Description of your talk" msgid "Description of your talk"
msgstr "Description de votre proposition" msgstr "Description de votre proposition"
#: cfp/models.py:259 #: cfp/models.py:262
msgid "Message to organizers" msgid "Message to organizers"
msgstr "Message aux organisateurs" msgstr "Message aux organisateurs"
#: cfp/models.py:259 #: cfp/models.py:262
msgid "" msgid ""
"If you have any constraint or if you have anything that may help you to " "If you have any constraint or if you have anything that may help you to "
"select your talk, like a video or slides of your talk, please write it down " "select your talk, like a video or slides of your talk, please write it down "
@ -469,23 +468,23 @@ msgstr ""
"votre proposition, comme une vidéo, des slides, n'hésitez pas à les ajouter " "votre proposition, comme une vidéo, des slides, n'hésitez pas à les ajouter "
"ici." "ici."
#: cfp/models.py:260 #: cfp/models.py:263
msgid "Talk Category" msgid "Talk Category"
msgstr "Catégorie de proposition" msgstr "Catégorie de proposition"
#: cfp/models.py:261 #: cfp/models.py:264
msgid "I'm ok to be recorded on video" msgid "I'm ok to be recorded on video"
msgstr "Jaccepte dêtre enregistré en vidéo" msgstr "Jaccepte dêtre enregistré en vidéo"
#: cfp/models.py:262 #: cfp/models.py:265
msgid "Video licence" msgid "Video licence"
msgstr "Licence vidéo" msgstr "Licence vidéo"
#: cfp/models.py:263 #: cfp/models.py:266
msgid "I need sound" msgid "I need sound"
msgstr "Jai besoin de son" msgstr "Jai besoin de son"
#: cfp/models.py:266 proposals/models.py:165 #: cfp/models.py:269 proposals/models.py:165
msgid "Duration (min)" msgid "Duration (min)"
msgstr "Durée (min)" msgstr "Durée (min)"
@ -568,52 +567,52 @@ msgstr "Veuillez sélectionner une catégorie."
msgid "Add a new user" msgid "Add a new user"
msgstr "Ajouter un nouvel utilisateur" msgstr "Ajouter un nouvel utilisateur"
#: cfp/templates/cfp/staff/participant_details.html:18 #: cfp/templates/cfp/staff/participant_details.html:20
msgid "Informations" msgid "Informations"
msgstr "Informations" msgstr "Informations"
#: cfp/templates/cfp/staff/participant_details.html:20 #: cfp/templates/cfp/staff/participant_details.html:22
msgid "E-mail:" msgid "E-mail:"
msgstr "E-mail :" msgstr "E-mail :"
#: cfp/templates/cfp/staff/participant_details.html:21 #: cfp/templates/cfp/staff/participant_details.html:23
msgid "Twitter:" msgid "Twitter:"
msgstr "Twitter :" msgstr "Twitter :"
#: cfp/templates/cfp/staff/participant_details.html:22 #: cfp/templates/cfp/staff/participant_details.html:24
msgid "LinkedIn:" msgid "LinkedIn:"
msgstr "LinkedIn :" msgstr "LinkedIn :"
#: cfp/templates/cfp/staff/participant_details.html:23 #: cfp/templates/cfp/staff/participant_details.html:25
msgid "Github:" msgid "Github:"
msgstr "Github :" msgstr "Github :"
#: cfp/templates/cfp/staff/participant_details.html:24 #: cfp/templates/cfp/staff/participant_details.html:26
msgid "Website:" msgid "Website:"
msgstr "Website :" msgstr "Website :"
#: cfp/templates/cfp/staff/participant_details.html:25 #: cfp/templates/cfp/staff/participant_details.html:27
msgid "Facebook:" msgid "Facebook:"
msgstr "Facebook :" msgstr "Facebook :"
#: cfp/templates/cfp/staff/participant_details.html:26 #: cfp/templates/cfp/staff/participant_details.html:28
msgid "Mastodon:" msgid "Mastodon:"
msgstr "Mastodon :" msgstr "Mastodon :"
#: cfp/templates/cfp/staff/participant_details.html:27 #: cfp/templates/cfp/staff/participant_details.html:29
msgid "Phone number:" msgid "Phone number:"
msgstr "Numéro de téléphone :" msgstr "Numéro de téléphone :"
#: cfp/templates/cfp/staff/participant_details.html:28 #: cfp/templates/cfp/staff/participant_details.html:30
msgid "Language:" msgid "Language:"
msgstr "Langue :" msgstr "Langue :"
#: cfp/templates/cfp/staff/participant_details.html:38 #: cfp/templates/cfp/staff/participant_details.html:40
#: proposals/templates/proposals/_talk_list.html:8 #: proposals/templates/proposals/_talk_list.html:8
msgid "by" msgid "by"
msgstr "par" msgstr "par"
#: cfp/templates/cfp/staff/participant_details.html:41 #: cfp/templates/cfp/staff/participant_details.html:43
#: cfp/templates/cfp/staff/talk_list.html:57 #: cfp/templates/cfp/staff/talk_list.html:57
#: proposals/templates/proposals/_talk_list.html:11 #: proposals/templates/proposals/_talk_list.html:11
#: proposals/templates/proposals/_talk_list.html:17 #: proposals/templates/proposals/_talk_list.html:17
@ -621,23 +620,22 @@ msgstr "par"
msgid "and" msgid "and"
msgstr "et" msgstr "et"
#: cfp/templates/cfp/staff/participant_details.html:44 #: cfp/templates/cfp/staff/participant_details.html:46
#: proposals/templates/proposals/_talk_list.html:14 #: proposals/templates/proposals/_talk_list.html:14
msgid "in" msgid "in"
msgstr "dans la session" msgstr "dans la session"
#: cfp/templates/cfp/staff/participant_details.html:50 #: cfp/templates/cfp/staff/participant_details.html:52
#: proposals/templates/proposals/_talk_list.html:23 #: proposals/templates/proposals/_talk_list.html:23
msgid "No talks" msgid "No talks"
msgstr "Aucun exposé" msgstr "Aucun exposé"
#: cfp/templates/cfp/staff/participant_details.html:53 #: cfp/templates/cfp/staff/participant_details.html:55
#: cfp/templates/cfp/staff/talk_details.html:133 #: cfp/templates/cfp/staff/talk_details.html:133
#: conversations/templates/conversations/inbox.html:9
msgid "Messaging" msgid "Messaging"
msgstr "Messagerie" msgstr "Messagerie"
#: cfp/templates/cfp/staff/participant_details.html:57 #: cfp/templates/cfp/staff/participant_details.html:59
msgid "" msgid ""
"Send a message <em>this message will be received by this participant and " "Send a message <em>this message will be received by this participant and "
"all the staff team</em>" "all the staff team</em>"
@ -645,6 +643,10 @@ msgstr ""
"Envoyer un message <em>ce message sera reçu par le participant et léquipe " "Envoyer un message <em>ce message sera reçu par le participant et léquipe "
"dorganisation</em>" "dorganisation</em>"
#: cfp/templates/cfp/staff/participant_form.html:8
msgid "Edit a speaker"
msgstr "Éditer un orateur"
#: cfp/templates/cfp/staff/participant_list.html:45 #: cfp/templates/cfp/staff/participant_list.html:45
#: cfp/templates/cfp/staff/talk_list.html:33 #: cfp/templates/cfp/staff/talk_list.html:33
#: proposals/templates/proposals/speaker_list.html:44 #: proposals/templates/proposals/speaker_list.html:44
@ -876,7 +878,7 @@ msgstr ""
"{}\n" "{}\n"
"\n" "\n"
#: cfp/views.py:218 cfp/views.py:278 conversations/views.py:40 #: cfp/views.py:218 cfp/views.py:278
msgid "Message sent!" msgid "Message sent!"
msgstr "Message envoyé !" msgstr "Message envoyé !"
@ -900,11 +902,11 @@ msgstr "Lexposé a été décliné."
msgid "Decision taken in account" msgid "Decision taken in account"
msgstr "Décision enregistrée" msgstr "Décision enregistrée"
#: cfp/views.py:298 #: cfp/views.py:306
msgid "[{}] You have been added to the staff team" msgid "[{}] You have been added to the staff team"
msgstr "[{}] Vous avez été ajouté aux membres du staff" msgstr "[{}] Vous avez été ajouté aux membres du staff"
#: cfp/views.py:299 #: cfp/views.py:307
msgid "" msgid ""
"Hi {},\n" "Hi {},\n"
"\n" "\n"
@ -928,46 +930,23 @@ msgstr ""
"{}\n" "{}\n"
"\n" "\n"
#: cfp/views.py:320 #: cfp/views.py:328
msgid "Modifications successfully saved." msgid "Modifications successfully saved."
msgstr "Modification enregistrée avec succès." msgstr "Modification enregistrée avec succès."
#: cfp/views.py:384 #: cfp/views.py:387
msgid "User created successfully." msgid "User created successfully."
msgstr "Utilisateur créé avec succès." msgstr "Utilisateur créé avec succès."
#: conversations/templates/conversations/_message_form.html:4
msgid "Send a message"
msgstr "Envoyer un message"
#: conversations/templates/conversations/_message_form.html:12
#: mailing/templates/mailing/_message_form.html:13
msgid "Send"
msgstr "Envoyer"
#: conversations/templates/conversations/conversation.html:9
#, python-format
msgid "Conversation with %(correspondent)s"
msgstr "Conversation avec %(correspondent)s"
#: conversations/templates/conversations/correspondent_list.html:9
msgid "Correspondents"
msgstr "Correspondants"
#: conversations/templates/conversations/correspondent_list.html:10
msgid "This is the list of participants that you follow."
msgstr "Ceci est la liste des participants que vous suivez."
#: conversations/templates/conversations/inbox.html:10
msgid "You can use this page to communicate with the staff."
msgstr ""
"Vous pouvez utiliser cette page pour communiquer avec léquipe organisatrice."
#: mailing/models.py:93 #: mailing/models.py:93
#, python-format #, python-format
msgid "Message from %(author)s" msgid "Message from %(author)s"
msgstr "Message de %(author)s" msgstr "Message de %(author)s"
#: mailing/templates/mailing/_message_form.html:13
msgid "Send"
msgstr "Envoyer"
#: mailing/templates/mailing/_message_list.html:13 #: mailing/templates/mailing/_message_list.html:13
msgid "No messages." msgid "No messages."
msgstr "Aucun message." msgstr "Aucun message."
@ -1429,5 +1408,22 @@ msgstr "Bénévoles"
msgid "volunteer" msgid "volunteer"
msgstr "bénévole" msgstr "bénévole"
#~ msgid "Send a message"
#~ msgstr "Envoyer un message"
#~ msgid "Conversation with %(correspondent)s"
#~ msgstr "Conversation avec %(correspondent)s"
#~ msgid "Correspondents"
#~ msgstr "Correspondants"
#~ msgid "This is the list of participants that you follow."
#~ msgstr "Ceci est la liste des participants que vous suivez."
#~ msgid "You can use this page to communicate with the staff."
#~ msgstr ""
#~ "Vous pouvez utiliser cette page pour communiquer avec léquipe "
#~ "organisatrice."
#~ msgid "Your talk \"{}\" has been submitted for {}" #~ msgid "Your talk \"{}\" has been submitted for {}"
#~ msgstr "Votre proposition \"{}\" a été transmise à {}" #~ msgstr "Votre proposition \"{}\" a été transmise à {}"