From a7d7129f6f6be0cf60d1a5dacd34e3d1a14f4522 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89lie=20Bouttier?= Date: Sat, 12 Aug 2017 00:50:42 +0200 Subject: [PATCH] participant edits by staff --- cfp/forms.py | 9 +- cfp/mixins.py | 5 + cfp/models.py | 3 + .../cfp/staff/participant_details.html | 2 + cfp/templates/cfp/staff/participant_form.html | 13 ++ cfp/urls.py | 3 +- cfp/views.py | 19 ++- locale/fr/LC_MESSAGES/django.mo | Bin 20919 -> 20493 bytes locale/fr/LC_MESSAGES/django.po | 154 +++++++++--------- 9 files changed, 119 insertions(+), 89 deletions(-) create mode 100644 cfp/templates/cfp/staff/participant_form.html diff --git a/cfp/forms.py b/cfp/forms.py index f852e46..dfe5352 100644 --- a/cfp/forms.py +++ b/cfp/forms.py @@ -90,7 +90,14 @@ class TalkFilterForm(forms.Form): 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): diff --git a/cfp/mixins.py b/cfp/mixins.py index bc70111..095e598 100644 --- a/cfp/mixins.py +++ b/cfp/mixins.py @@ -6,3 +6,8 @@ from .utils import is_staff class StaffRequiredMixin(UserPassesTestMixin): def test_func(self): return is_staff(self.request, self.request.user) + + +class OnSiteMixin: + def get_queryset(self): + return super().get_queryset().filter(site=self.kwargs['conference'].site) diff --git a/cfp/models.py b/cfp/models.py index 636dede..9db1c75 100644 --- a/cfp/models.py +++ b/cfp/models.py @@ -105,6 +105,9 @@ class Participant(PonyConfModel): objects = ParticipantManager() + def get_absolute_url(self): + return reverse('participant-details', kwargs={'participant_id': self.token}) + class Meta: # A User can participe only once to a Conference (= Site) unique_together = ('site', 'email') diff --git a/cfp/templates/cfp/staff/participant_details.html b/cfp/templates/cfp/staff/participant_details.html index 345601e..0b55dcd 100644 --- a/cfp/templates/cfp/staff/participant_details.html +++ b/cfp/templates/cfp/staff/participant_details.html @@ -7,6 +7,8 @@

{{ participant }}

+

{% trans "Edit" %}

+

{% trans "Biography" %}

{{ participant.biography|linebreaksbr }}

diff --git a/cfp/templates/cfp/staff/participant_form.html b/cfp/templates/cfp/staff/participant_form.html new file mode 100644 index 0000000..997444b --- /dev/null +++ b/cfp/templates/cfp/staff/participant_form.html @@ -0,0 +1,13 @@ +{% extends 'cfp/staff/base.html' %} +{% load i18n crispy_forms_tags %} + +{% block speakerstab %} class="active"{% endblock %} + +{% block content %} + +

{% trans "Edit a speaker" %}

+ +{% url 'participant-details' participant.token as cancel_url %} +{% include '_form.html' %} + +{% endblock %} diff --git a/cfp/urls.py b/cfp/urls.py index fdfc1cf..f80929c 100644 --- a/cfp/urls.py +++ b/cfp/urls.py @@ -15,9 +15,10 @@ urlpatterns = [ url(r'^staff/talks/(?P[\w\-]+)/vote/(?P[-+0-2]+)/$', views.talk_vote, name='talk-vote'), url(r'^staff/talks/(?P[\w\-]+)/accept/$', views.talk_decide, {'accept': True}, name='talk-accept'), url(r'^staff/talks/(?P[\w\-]+)/decline/$', views.talk_decide, {'accept': False}, name='talk-decline'), - url(r'^staff/talks/(?P[\w\-]+)/edit/$', views.TalkEdit.as_view(), name='talk-edit'), + url(r'^staff/talks/(?P[\w\-]+)/edit/$', views.TalkUpdate.as_view(), name='talk-edit'), url(r'^staff/speakers/$', views.participant_list, name='participant-list'), url(r'^staff/speakers/(?P[\w\-]+)/$', views.participant_details, name='participant-details'), + url(r'^staff/speakers/(?P[\w\-]+)/edit/$', views.ParticipantUpdate.as_view(), name='participant-edit'), 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/(?P[-\w]+)/edit/$', views.TrackUpdate.as_view(), name='track-edit'), diff --git a/cfp/views.py b/cfp/views.py index 0f9b76f..6b529f1 100644 --- a/cfp/views.py +++ b/cfp/views.py @@ -15,10 +15,10 @@ from functools import reduce from mailing.models import Message from mailing.forms import MessageForm from .decorators import staff_required -from .mixins import StaffRequiredMixin +from .mixins import StaffRequiredMixin, OnSiteMixin from .utils import is_staff 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): @@ -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 def conference(request, conference): form = ConferenceForm(request.POST or None, instance=conference) @@ -325,12 +333,7 @@ You can now: }) -class OnSiteMixin: - def get_queryset(self): - return super().get_queryset().filter(site=self.kwargs['conference'].site) - - -class TalkEdit(StaffRequiredMixin, OnSiteMixin, UpdateView): +class TalkUpdate(StaffRequiredMixin, OnSiteMixin, UpdateView): model = Talk slug_field = 'token' slug_url_kwarg = 'talk_id' diff --git a/locale/fr/LC_MESSAGES/django.mo b/locale/fr/LC_MESSAGES/django.mo index ed69bb9ebda103c8dc7dbdd251fc6c8b06ef3757..1bffd0a043df4b0d7977b74d1890cd8efcfe12ee 100644 GIT binary patch delta 6098 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 VayPZV=9jy_^B&*alidn@{|8IEd)xp3 delta 6502 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 diff --git a/locale/fr/LC_MESSAGES/django.po b/locale/fr/LC_MESSAGES/django.po index 74c014c..8a4924b 100644 --- a/locale/fr/LC_MESSAGES/django.po +++ b/locale/fr/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\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" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -95,19 +95,20 @@ msgid "Contact" msgstr "Contacter" #: accounts/templates/accounts/participant_details.html:15 +#: cfp/templates/cfp/staff/participant_details.html:10 #: cfp/templates/cfp/staff/talk_details.html:10 #: proposals/templates/proposals/talk_detail.html:16 msgid "Edit" msgstr "Éditer" #: 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" msgstr "Biographie" #: accounts/templates/accounts/participant_details.html:27 #: 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 #: proposals/templates/proposals/talk_list.html:9 msgid "Talks" @@ -174,7 +175,7 @@ msgid "Constraints" msgstr "Contraintes" #: 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 #: proposals/templates/proposals/talk_detail.html:102 msgid "Notes" @@ -194,12 +195,10 @@ msgid "View conversation" msgstr "Afficher la discussion" #: accounts/templates/accounts/participant_list.html:31 -#: conversations/templates/conversations/correspondent_list.html:27 msgid "Unsubscribe from the conversation" msgstr "Se désabonner de la discussion" #: accounts/templates/accounts/participant_list.html:35 -#: conversations/templates/conversations/correspondent_list.html:29 msgid "Subscribe to the conversation" msgstr "S’abonner à la discussion" @@ -312,7 +311,7 @@ msgstr "Catégorie" msgid "Title" 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 #: proposals/models.py:77 proposals/models.py:158 #: proposals/templates/proposals/talk_detail.html:72 volunteers/models.py:14 @@ -330,7 +329,7 @@ msgstr "Visible par les orateurs" msgid "Status" 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_list.html:41 #: cfp/templates/cfp/staff/track_form.html:14 proposals/models.py:160 @@ -356,17 +355,23 @@ msgstr "" msgid "Not assigned" 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." msgstr "" "Les nouveaux membres du staff seront informés de leur nouveau rôle par " "courrier électronique." -#: cfp/forms.py:129 +#: cfp/forms.py:136 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:134 +#: cfp/forms.py:141 msgid "A user with that email already exists." msgstr "Un utilisateur avec cet email existe déjà." @@ -419,25 +424,19 @@ msgstr "Votre Nom" msgid "This field is only visible by organizers." msgstr "Ce champs est uniquement visible par les organisateurs." -#: cfp/models.py:154 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/models.py:177 proposals/models.py:96 +#: cfp/models.py:180 proposals/models.py:96 msgid "Default duration (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" 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" 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/talk_details.html:75 #: 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" msgstr "Orateurs" -#: cfp/models.py:254 +#: cfp/models.py:257 msgid "Talk Title" msgstr "Titre de votre proposition:" -#: cfp/models.py:257 +#: cfp/models.py:260 msgid "Description of your talk" msgstr "Description de votre proposition" -#: cfp/models.py:259 +#: cfp/models.py:262 msgid "Message to organizers" msgstr "Message aux organisateurs" -#: cfp/models.py:259 +#: cfp/models.py:262 msgid "" "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 " @@ -469,23 +468,23 @@ msgstr "" "votre proposition, comme une vidéo, des slides, n'hésitez pas à les ajouter " "ici." -#: cfp/models.py:260 +#: cfp/models.py:263 msgid "Talk Category" msgstr "Catégorie de proposition" -#: cfp/models.py:261 +#: cfp/models.py:264 msgid "I'm ok to be recorded on video" msgstr "J’accepte d’être enregistré en vidéo" -#: cfp/models.py:262 +#: cfp/models.py:265 msgid "Video licence" msgstr "Licence vidéo" -#: cfp/models.py:263 +#: cfp/models.py:266 msgid "I need sound" msgstr "J’ai besoin de son" -#: cfp/models.py:266 proposals/models.py:165 +#: cfp/models.py:269 proposals/models.py:165 msgid "Duration (min)" msgstr "Durée (min)" @@ -568,52 +567,52 @@ msgstr "Veuillez sélectionner une catégorie." msgid "Add a new user" msgstr "Ajouter un nouvel utilisateur" -#: cfp/templates/cfp/staff/participant_details.html:18 +#: cfp/templates/cfp/staff/participant_details.html:20 msgid "Informations" msgstr "Informations" -#: cfp/templates/cfp/staff/participant_details.html:20 +#: cfp/templates/cfp/staff/participant_details.html:22 msgid "E-mail:" msgstr "E-mail :" -#: cfp/templates/cfp/staff/participant_details.html:21 +#: cfp/templates/cfp/staff/participant_details.html:23 msgid "Twitter:" msgstr "Twitter :" -#: cfp/templates/cfp/staff/participant_details.html:22 +#: cfp/templates/cfp/staff/participant_details.html:24 msgid "LinkedIn:" msgstr "LinkedIn :" -#: cfp/templates/cfp/staff/participant_details.html:23 +#: cfp/templates/cfp/staff/participant_details.html:25 msgid "Github:" msgstr "Github :" -#: cfp/templates/cfp/staff/participant_details.html:24 +#: cfp/templates/cfp/staff/participant_details.html:26 msgid "Website:" msgstr "Website :" -#: cfp/templates/cfp/staff/participant_details.html:25 +#: cfp/templates/cfp/staff/participant_details.html:27 msgid "Facebook:" msgstr "Facebook :" -#: cfp/templates/cfp/staff/participant_details.html:26 +#: cfp/templates/cfp/staff/participant_details.html:28 msgid "Mastodon:" msgstr "Mastodon :" -#: cfp/templates/cfp/staff/participant_details.html:27 +#: cfp/templates/cfp/staff/participant_details.html:29 msgid "Phone number:" 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:" 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 msgid "by" 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 #: proposals/templates/proposals/_talk_list.html:11 #: proposals/templates/proposals/_talk_list.html:17 @@ -621,23 +620,22 @@ msgstr "par" msgid "and" 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 msgid "in" 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 msgid "No talks" 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 -#: conversations/templates/conversations/inbox.html:9 msgid "Messaging" msgstr "Messagerie" -#: cfp/templates/cfp/staff/participant_details.html:57 +#: cfp/templates/cfp/staff/participant_details.html:59 msgid "" "Send a message – this message will be received by this participant and " "all the staff team" @@ -645,6 +643,10 @@ msgstr "" "Envoyer un message – ce message sera reçu par le participant et l’équipe " "d’organisation" +#: 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/talk_list.html:33 #: proposals/templates/proposals/speaker_list.html:44 @@ -876,7 +878,7 @@ msgstr "" "{}\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!" msgstr "Message envoyé !" @@ -900,11 +902,11 @@ msgstr "L’exposé a été décliné." msgid "Decision taken in account" msgstr "Décision enregistrée" -#: cfp/views.py:298 +#: cfp/views.py:306 msgid "[{}] You have been added to the staff team" msgstr "[{}] Vous avez été ajouté aux membres du staff" -#: cfp/views.py:299 +#: cfp/views.py:307 msgid "" "Hi {},\n" "\n" @@ -928,46 +930,23 @@ msgstr "" "{}\n" "\n" -#: cfp/views.py:320 +#: cfp/views.py:328 msgid "Modifications successfully saved." msgstr "Modification enregistrée avec succès." -#: cfp/views.py:384 +#: cfp/views.py:387 msgid "User created successfully." 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 #, python-format msgid "Message from %(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 msgid "No messages." msgstr "Aucun message." @@ -1429,5 +1408,22 @@ msgstr "Bénévoles" msgid "volunteer" 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 {}" #~ msgstr "Votre proposition \"{}\" a été transmise à {}"