diff --git a/cfp/views.py b/cfp/views.py
index 67c667a..36fe02d 100644
--- a/cfp/views.py
+++ b/cfp/views.py
@@ -287,7 +287,7 @@ def proposal_talk_edit(request, speaker, talk_id=None):
categories = TalkCategory.objects.filter(site=request.conference.site)
else:
categories = request.conference.opened_categories
- form = TalkForm(request.POST or None, categories=categories, instance=talk)
+ form = TalkForm(request.POST or None, request.FILES or None, categories=categories, instance=talk)
if request.method == 'POST' and form.is_valid():
talk = form.save(commit=False)
talk.site = request.conference.site
diff --git a/locale/fr/LC_MESSAGES/django.mo b/locale/fr/LC_MESSAGES/django.mo
index 66a61d3479ab439dd7f065e2000a5c14c7019258..2f16375000f52e70c9b6da282071c1379bb64e30 100644
GIT binary patch
delta 6020
zcmYk=30PKD9>?*6$|{Sp2)MwDh){~)@;U~n
RF3dymgE_j&$)&N=tqbI$#rbMH%iR^>N$
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
delta 5966
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
Gpx*(S4TYNk
diff --git a/locale/fr/LC_MESSAGES/django.po b/locale/fr/LC_MESSAGES/django.po
index 320dae7..ab8af8a 100644
--- a/locale/fr/LC_MESSAGES/django.po
+++ b/locale/fr/LC_MESSAGES/django.po
@@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-11-11 17:45+0000\n"
-"PO-Revision-Date: 2017-11-11 18:46+0100\n"
+"POT-Creation-Date: 2017-11-14 23:02+0000\n"
+"PO-Revision-Date: 2017-11-15 00:03+0100\n"
"Last-Translator: \n"
"Language-Team: \n"
"Language: fr\n"
@@ -22,7 +22,7 @@ msgstr ""
msgid "Pending decision"
msgstr "Décision en attente"
-#: cfp/forms.py:18 cfp/forms.py:124 cfp/forms.py:221
+#: cfp/forms.py:18 cfp/forms.py:125 cfp/forms.py:222
msgid "Accepted"
msgstr "Accepté"
@@ -34,7 +34,7 @@ msgstr "Décliné"
msgid "Waiting"
msgstr "En attente"
-#: cfp/forms.py:29 cfp/forms.py:130 cfp/forms.py:227 cfp/models.py:373
+#: cfp/forms.py:29 cfp/forms.py:131 cfp/forms.py:228 cfp/models.py:373
msgid "Confirmed"
msgstr "Confirmé"
@@ -51,132 +51,134 @@ msgctxt "activity"
msgid "None"
msgstr "Aucune"
-#: cfp/forms.py:98
+#: cfp/forms.py:99
#, python-format
msgid "Default duration: %(duration)d min"
msgstr "Durée par défaut : %(duration)d min"
-#: cfp/forms.py:106 cfp/forms.py:118 cfp/forms.py:215
+#: cfp/forms.py:107 cfp/forms.py:119 cfp/forms.py:216
#: cfp/templates/cfp/staff/talk_details.html:15
msgid "Category"
msgstr "Catégorie"
-#: cfp/forms.py:107 cfp/templates/cfp/staff/talk_list.html:43
+#: cfp/forms.py:108 cfp/templates/cfp/staff/talk_list.html:43
msgid "Title"
msgstr "Titre"
-#: cfp/forms.py:108 cfp/models.py:158 cfp/models.py:499
+#: cfp/forms.py:109 cfp/models.py:158 cfp/models.py:499
#: cfp/templates/cfp/proposal_talk_details.html:75
#: cfp/templates/cfp/staff/talk_details.html:64
msgid "Description"
msgstr "Description"
-#: cfp/forms.py:109 cfp/models.py:112 cfp/models.py:464
+#: cfp/forms.py:110 cfp/models.py:112 cfp/models.py:464
#: cfp/templates/cfp/staff/participant_details.html:19
#: cfp/templates/cfp/staff/talk_details.html:78
#: cfp/templates/cfp/staff/volunteer_details.html:22
msgid "Notes"
msgstr "Notes"
-#: cfp/forms.py:112
+#: cfp/forms.py:113
msgid "Visible by speakers"
msgstr "Visible par les orateurs"
-#: cfp/forms.py:136 cfp/forms.py:233 cfp/models.py:330
+#: cfp/forms.py:137 cfp/forms.py:234 cfp/models.py:330
#: cfp/templates/cfp/staff/talk_details.html:21
#: cfp/templates/cfp/staff/talk_list.html:46
#: cfp/templates/cfp/staff/track_form.html:14
msgid "Track"
msgstr "Session"
-#: cfp/forms.py:142
+#: cfp/forms.py:143
msgid "Tag"
msgstr "Étiquette"
-#: cfp/forms.py:148 cfp/templates/cfp/staff/talk_details.html:83
+#: cfp/forms.py:149 cfp/templates/cfp/staff/talk_details.html:83
msgid "Vote"
msgstr "Vote"
-#: cfp/forms.py:149
+#: cfp/forms.py:150
msgid "Filter talks you already / not yet voted for"
msgstr ""
"Filtrer les propositions pour lesquelles vous avez déjà voté / pas encore "
"voté"
-#: cfp/forms.py:152 cfp/templates/cfp/staff/room_form.html:14
+#: cfp/forms.py:153 cfp/templates/cfp/staff/room_form.html:14
#: cfp/templates/cfp/staff/talk_details.html:38
msgid "Room"
msgstr "Salle"
-#: cfp/forms.py:153
+#: cfp/forms.py:154
msgid "Filter talks already / not yet affected to a room"
msgstr "Filtrer les exposés déjà / pas encore affectées à une salle"
-#: cfp/forms.py:156
+#: cfp/forms.py:157
msgid "Scheduled"
msgstr "Programmé"
-#: cfp/forms.py:157
+#: cfp/forms.py:158
msgid "Filter talks already / not yet scheduled"
msgstr "Filtrer les exposés déjà / pas encore planifiées"
-#: cfp/forms.py:160 cfp/models.py:347
+#: cfp/forms.py:161 cfp/models.py:347
+#: cfp/templates/cfp/proposal_talk_details.html:89
#: cfp/templates/cfp/staff/talk_details.html:54
msgid "Materials"
msgstr "Supports"
-#: cfp/forms.py:161
+#: cfp/forms.py:162
msgid "Filter talks with / without materials"
msgstr "Filtrer les exposés avec / sans supports"
-#: cfp/forms.py:164 cfp/templates/cfp/staff/talk_details.html:58
+#: cfp/forms.py:165 cfp/templates/cfp/proposal_talk_details.html:93
+#: cfp/templates/cfp/staff/talk_details.html:58
msgid "Video"
msgstr "Vidéo"
-#: cfp/forms.py:165
+#: cfp/forms.py:166
msgid "Filter talks with / without video"
msgstr "Filtrer les exposés avec / sans vidéo"
-#: cfp/forms.py:174 cfp/forms.py:245
+#: cfp/forms.py:175 cfp/forms.py:246
msgid "Not assigned"
msgstr "Pas encore assignée"
-#: cfp/forms.py:180
+#: cfp/forms.py:181
msgid "Accept talk?"
msgstr "Accepter la proposition ?"
-#: cfp/forms.py:181
+#: cfp/forms.py:182
msgid "Assign to a track"
msgstr "Assigner à une session"
-#: cfp/forms.py:182 cfp/templates/cfp/admin/tag_list.html:11
+#: cfp/forms.py:183 cfp/templates/cfp/admin/tag_list.html:11
msgid "Add a tag"
msgstr "Ajouter une étiquette"
-#: cfp/forms.py:183
+#: cfp/forms.py:184
msgid "Put in a room"
msgstr "Assigner à une salle"
-#: cfp/forms.py:199
+#: cfp/forms.py:200
msgid "Notify by mail?"
msgstr "Notifier par e-mail ?"
-#: cfp/forms.py:249 cfp/models.py:459
+#: cfp/forms.py:250 cfp/models.py:459
#: cfp/templates/cfp/staff/volunteer_list.html:30
msgid "Email"
msgstr "E-mail"
-#: cfp/forms.py:268
+#: cfp/forms.py:269
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:288
+#: cfp/forms.py:289
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:293
+#: cfp/forms.py:294
msgid "A user with that email already exists."
msgstr "Un utilisateur avec cet email existe déjà."
@@ -328,7 +330,7 @@ msgstr "Titre de la proposition"
msgid "Description of your talk"
msgstr "Description de votre proposition"
-#: cfp/models.py:332 cfp/templates/cfp/proposal_talk_details.html:85
+#: cfp/models.py:332 cfp/templates/cfp/proposal_talk_details.html:99
msgid "Message to organizers"
msgstr "Message aux organisateurs"
@@ -722,11 +724,20 @@ msgid "remove"
msgstr "supprimer"
#: cfp/templates/cfp/proposal_talk_details.html:81
-#: cfp/templates/cfp/proposal_talk_details.html:91
+#: cfp/templates/cfp/proposal_talk_details.html:105
#: cfp/templates/cfp/staff/talk_details.html:66
msgid "No description provided."
msgstr "Aucune description fournie."
+#: cfp/templates/cfp/proposal_talk_details.html:86
+msgid "Materials and video"
+msgstr "Supports et vidéo"
+
+#: cfp/templates/cfp/proposal_talk_details.html:94
+#: cfp/templates/cfp/staff/talk_details.html:59
+msgid "download"
+msgstr "télécharger"
+
#: cfp/templates/cfp/proposal_talk_form.html:14
msgid "Submit a proposal"
msgstr "Soumettre une proposition"
@@ -971,10 +982,6 @@ msgstr "Créneau"
msgid "not defined"
msgstr "non défini"
-#: cfp/templates/cfp/staff/talk_details.html:59
-msgid "download"
-msgstr "télécharger"
-
#: cfp/templates/cfp/staff/talk_details.html:75
msgid "No speakers."
msgstr "Aucun orateur."