]> git.parisson.com Git - teleforma.git/commitdiff
avoid double script submission
authorGuillaume Pellerin <yomguy@parisson.com>
Wed, 29 Jul 2015 08:41:54 +0000 (10:41 +0200)
committerGuillaume Pellerin <yomguy@parisson.com>
Wed, 29 Jul 2015 08:41:54 +0000 (10:41 +0200)
teleforma/exam/templates/exam/script_form.html
teleforma/exam/views.py
teleforma/locale/en/LC_MESSAGES/django.mo
teleforma/locale/en/LC_MESSAGES/django.po
teleforma/locale/fr/LC_MESSAGES/django.mo
teleforma/locale/fr/LC_MESSAGES/django.po

index e08de42b9c71b2741712963c117f0404ba8e4f9a..b4c17c4ab9f626a3049ae0457f18d8ad0966ed17 100644 (file)
 </div>
 <br />
 
+{% if messages %}
+    <div class="messages">
+        {% for message in messages %}
+          <div{% if message.tags %} class="{{ message.tags }}"{% endif %}>{{ message }}</div>
+        {% endfor %}
+    </div>
+{% endif %}
+<br />
+
 <div>Ce formulaire vous permet de soumettre une copie <b>non corrigée</b> à la correction en ligne.</div>
 <div>Merci de fournir <b>un seul fichier par épreuve</b> au format <b>PDF uniquement</b> et de <b>taille inférieure à 50 Mo</b>.</div>
 <br/>
index 7a597bf76ae8f67d68f9dc858967e297af8e5fd6..3bfd5b0b4bbbd6fa7b0c059a3ac928056c9908b8 100644 (file)
@@ -159,8 +159,14 @@ class ScriptCreateView(CreateView):
         return reverse_lazy('teleforma-exam-scripts-pending', kwargs={'period_id':period.id})
 
     def form_valid(self, form):
-        form.instance.author = self.request.user
-        messages.info(self.request, _("You have successfully submitted your script. It will be processed in the next hours."))
+        scripts = Script.objects.filter(course=form.cleaned_data['course'], session=form.cleaned_data['session'],
+                                        type=form.cleaned_data['type'], author=self.request.user)
+        if scripts:
+            messages.error(self.request, _("Error: you have already submitted a script for this session, the same course and the same type!"))
+            return redirect('teleforma-exam-script-create', self.kwargs['period_id'])
+        else:
+            form.instance.author = self.request.user
+            messages.info(self.request, _("You have successfully submitted your script. It will be processed in the next hours."))
         return super(ScriptCreateView, self).form_valid(form)
 
     def form_invalid(self, form):
index cdb01789d061b0978712e8419cca89af2b076adc..bf5e60219219791975ad877ac6c1a57e4c51cbc0 100644 (file)
Binary files a/teleforma/locale/en/LC_MESSAGES/django.mo and b/teleforma/locale/en/LC_MESSAGES/django.mo differ
index fe2f37650d5056bdb0aa79ebf48f55a0cc1a07d1..c169175641fd98b65d25ff7771e74f4917510d5f 100644 (file)
@@ -6,7 +6,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-07-14 18:26+0200\n"
+"POT-Creation-Date: 2015-07-29 10:41+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: Guillaume Pellerin <yomguy@parisson.com>\n"
 "Language-Team: LANGUAGE <lists@parisson.com>\n"
@@ -16,7 +16,7 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n > 1)\n"
 
-#: admin.py:16 exam/models.py:123 exam/models.py:226 models/ae.py:47
+#: admin.py:18 exam/models.py:123 exam/models.py:225 models/ae.py:47
 #: models/core.py:111 models/core.py:136 models/core.py:255 models/core.py:506
 #: models/core.py:552 models/core.py:594 models/crfpa.py:64
 #: models/crfpa.py:129
@@ -95,149 +95,149 @@ msgstr "pas de fichier"
 msgid "file too large"
 msgstr "fichier trop gros"
 
-#: exam/models.py:121 exam/models.py:225 models/core.py:197 models/core.py:257
+#: exam/models.py:121 exam/models.py:224 models/core.py:197 models/core.py:257
 #: models/core.py:501 models/core.py:590 models/pro.py:45
 msgid "course"
 msgstr "matière"
 
-#: exam/models.py:122 exam/models.py:232
+#: exam/models.py:122 exam/models.py:231
 msgid "corrector"
 msgstr "correcteur"
 
-#: exam/models.py:125
+#: exam/models.py:124
 msgid "value"
 msgstr "valeur"
 
-#: exam/models.py:126 exam/templates/exam/quotas.html:22
+#: exam/models.py:125 exam/templates/exam/quotas.html:22
 msgid "date start"
 msgstr "date de début"
 
-#: exam/models.py:127 exam/templates/exam/quotas.html:23
+#: exam/models.py:126 exam/templates/exam/quotas.html:23
 msgid "date end"
 msgstr "date de fin"
 
-#: exam/models.py:128 exam/models.py:230 models/core.py:399 models/core.py:508
+#: exam/models.py:127 exam/models.py:229 models/core.py:399 models/core.py:508
 #: models/core.py:598
 msgid "type"
 msgstr "type"
 
-#: exam/models.py:131
+#: exam/models.py:130
 msgid "Quota"
 msgstr ""
 
-#: exam/models.py:132 exam/templates/exam/quotas.html:12
+#: exam/models.py:131 exam/templates/exam/quotas.html:12
 msgid "Quotas"
 msgstr ""
 
-#: exam/models.py:181 models/core.py:468 models/pro.py:67
+#: exam/models.py:180 models/core.py:468 models/pro.py:67
 msgid "date added"
 msgstr "date d'ajout"
 
-#: exam/models.py:182 models/core.py:160 models/core.py:469
+#: exam/models.py:181 models/core.py:160 models/core.py:469
 #: models/crfpa.py:212 models/pro.py:68
 msgid "date modified"
 msgstr "date de modification"
 
-#: exam/models.py:183
+#: exam/models.py:182
 msgid "UUID"
 msgstr ""
 
-#: exam/models.py:184
+#: exam/models.py:183
 msgid "MIME type"
 msgstr "Type MIME"
 
-#: exam/models.py:185
+#: exam/models.py:184
 msgid "sha1"
 msgstr ""
 
-#: exam/models.py:201
+#: exam/models.py:200
 msgid "script"
 msgstr "copie"
 
-#: exam/models.py:202
+#: exam/models.py:201
 msgid "Page file"
 msgstr "Fichier de page"
 
-#: exam/models.py:203
+#: exam/models.py:202
 msgid "Image file"
 msgstr "Fichier image"
 
-#: exam/models.py:204 models/pro.py:49 models/pro.py:85
+#: exam/models.py:203 models/pro.py:49 models/pro.py:85
 msgid "rank"
 msgstr "rang"
 
-#: exam/models.py:207
+#: exam/models.py:206
 msgid "Page"
 msgstr "Page"
 
-#: exam/models.py:208
+#: exam/models.py:207
 msgid "Pages"
 msgstr "Pages"
 
-#: exam/models.py:213 models/core.py:93 models/core.py:106 models/core.py:128
+#: exam/models.py:212 models/core.py:93 models/core.py:106 models/core.py:128
 #: models/core.py:141 models/core.py:239 models/core.py:484 models/crfpa.py:47
 #: models/crfpa.py:63
 msgid "name"
 msgstr "nom"
 
-#: exam/models.py:216
+#: exam/models.py:215
 msgid "ScriptType"
 msgstr "Type de copie"
 
-#: exam/models.py:217
+#: exam/models.py:216
 msgid "ScriptTypes"
 msgstr "Types de copies"
 
-#: exam/models.py:228 models/core.py:261 models/core.py:510
+#: exam/models.py:227 models/core.py:261 models/core.py:510
 msgid "session"
 msgstr "séance"
 
-#: exam/models.py:231
+#: exam/models.py:230
 msgid "author"
 msgstr "auteur"
 
-#: exam/models.py:233
+#: exam/models.py:232
 msgid "PDF file"
 msgstr "Fichier PDF"
 
-#: exam/models.py:234
+#: exam/models.py:233
 msgid "Box UUID"
 msgstr ""
 
-#: exam/models.py:235
+#: exam/models.py:234
 msgid "score"
 msgstr "note"
 
-#: exam/models.py:236 models/pro.py:125
+#: exam/models.py:235 models/pro.py:125
 msgid "comments"
 msgstr "commentaires"
 
-#: exam/models.py:237 models/core.py:270 models/pro.py:48 models/pro.py:88
+#: exam/models.py:236 models/core.py:270 models/pro.py:48 models/pro.py:88
 #: models/pro.py:104
 msgid "status"
 msgstr "status"
 
-#: exam/models.py:238
+#: exam/models.py:237
 msgid "reason"
 msgstr "raison"
 
-#: exam/models.py:239
+#: exam/models.py:238
 msgid "date submitted"
 msgstr "date de soumission"
 
-#: exam/models.py:240
+#: exam/models.py:239
 msgid "date marked"
 msgstr "date de correction"
 
-#: exam/models.py:241
+#: exam/models.py:240
 msgid "date rejected"
 msgstr "date de rejet"
 
-#: exam/models.py:242
+#: exam/models.py:241
 msgid "URL"
 msgstr ""
 
-#: exam/models.py:246 exam/templates/exam/inc/script_list.html:14
+#: exam/models.py:245 exam/templates/exam/inc/script_list.html:14
 #: templates/teleforma/course.html:50
 #: templates/teleforma/course_conference.html:40
 #: templates/teleforma/course_conference.html:71
@@ -247,6 +247,7 @@ msgstr ""
 #: templates/teleforma/course_media_video_embed.html:34
 #: templates/teleforma/inc/conference_list.html:26
 #: templates/teleforma/inc/media_list.html:37
+#: templates/teleforma/inc/media_list_pending.html:37
 msgid "Session"
 msgstr "Séance"
 
@@ -340,6 +341,7 @@ msgstr ""
 "serait pas prise en compte."
 
 #: exam/templates/exam/quotas.html:24 exam/templates/exam/scripts.html:25
+#: templates/teleforma/courses.html:48
 msgid "Pending"
 msgstr "En attente"
 
@@ -355,23 +357,23 @@ msgstr "Valeur"
 msgid "Level"
 msgstr "Niveau"
 
-#: exam/templates/exam/score_form.html:32 exam/templates/exam/scores.html:35
+#: exam/templates/exam/score_form.html:32 exam/templates/exam/scores.html:37
 msgid "New score"
 msgstr "Nouvelle note"
 
 #: exam/templates/exam/score_form.html:60
-#: exam/templates/exam/script_form.html:68
+#: exam/templates/exam/script_form.html:77
 #: templates/registration/registration_form.html:21
 msgid "Submit"
 msgstr "Soumettre"
 
-#: exam/templates/exam/scores.html:18 templates/teleforma/annals.html:15
+#: exam/templates/exam/scores.html:20 templates/teleforma/annals.html:15
 #: templates/telemeta/profile_detail.html:16
 msgid "My courses"
 msgstr "Mes matières"
 
-#: exam/templates/exam/scores.html:46 exam/templates/exam/scripts.html:28
-#: templates/telemeta/base.html:133 templates/telemeta/base.html.py:135
+#: exam/templates/exam/scores.html:48 templates/telemeta/base.html:133
+#: templates/telemeta/base.html.py:135
 msgid "Scores"
 msgstr "Notes"
 
@@ -408,12 +410,12 @@ msgid "Mark"
 msgstr "Note"
 
 #: exam/templates/exam/script_detail.html:144
-#: templates/postman/base_write.html:56
+#: templates/postman/base_write.html:63
 #: templates/teleforma/inc/chat_room.html:13
 msgid "Send"
 msgstr "Envoyer"
 
-#: exam/templates/exam/script_form.html:32 exam/templates/exam/scripts.html:37
+#: exam/templates/exam/script_form.html:32 exam/templates/exam/scripts.html:36
 msgid "New script"
 msgstr "Nouvelle copie"
 
@@ -425,23 +427,29 @@ msgstr "Copie vierge"
 msgid "Answers"
 msgstr "Réponses"
 
-#: exam/templates/exam/scripts.html:68
+#: exam/templates/exam/scripts.html:67
 msgid "No scripts"
 msgstr "Aucune copie"
 
-#: exam/views.py:94
+#: exam/views.py:99
 msgid "Pending scripts"
 msgstr "Copies en attente"
 
-#: exam/views.py:126
+#: exam/views.py:125
 msgid "Treated scripts"
 msgstr "Copie traitées"
 
-#: exam/views.py:146
+#: exam/views.py:147
 msgid "Rejected scripts"
 msgstr "Copies rejetées"
 
-#: exam/views.py:162
+#: exam/views.py:165
+msgid ""
+"Error: you have already submitted a script for this session, the same course "
+"and the same type!"
+msgstr ""
+
+#: exam/views.py:169
 msgid ""
 "You have successfully submitted your script. It will be processed in the "
 "next hours."
@@ -449,7 +457,7 @@ msgstr ""
 "Vous avez correctement soumis votre copie. Elle sera traitée dans les "
 "prochaines heures puis corrigée."
 
-#: exam/views.py:166
+#: exam/views.py:173
 msgid ""
 "There was a problem with your submission. Please try again, later if "
 "possible."
@@ -457,7 +465,7 @@ msgstr ""
 "Il y a une une erreur lors de votre soumission de copie. Merci de vérifier "
 "votre fichier ou de réessayer plus tard."
 
-#: exam/views.py:267
+#: exam/views.py:279
 msgid "all courses"
 msgstr "toutes les matières"
 
@@ -989,11 +997,33 @@ msgstr ""
 msgid "No messages."
 msgstr "Messages"
 
-#: templates/postman/base_write.html:31
+#: templates/postman/base_write.html:30
+msgid ""
+"Vous pouvez ici échanger des messages avec les professeurs et les "
+"administrateurs."
+msgstr ""
+
+#: templates/postman/base_write.html:32
+msgid ""
+"Pour les questions concernant l'organisation des cours, le planning ou les "
+"documents de cours, adressez-vous à <b>Admin-CRFPA</b>."
+msgstr ""
+
+#: templates/postman/base_write.html:34
+msgid ""
+"Pour les questions concernant uniquement l'accès à la plateforme et aux "
+"médias vidéo ou audio, lire d'abord"
+msgstr ""
+
+#: templates/postman/base_write.html:34
+msgid "puis adressez-vous à <b>Support technique</b>."
+msgstr ""
+
+#: templates/postman/base_write.html:38
 msgid "to an administrator"
 msgstr "à un administrateur"
 
-#: templates/postman/base_write.html:39
+#: templates/postman/base_write.html:46
 msgid "to a professor"
 msgstr "à un professeur"
 
@@ -1333,13 +1363,14 @@ msgid "Registration"
 msgstr "Inscription"
 
 #: templates/registration/registration_complete.html:23
-#: templates/teleforma/annals.html:74 templates/teleforma/course_media.html:64
+#: templates/teleforma/annals.html:73 templates/teleforma/course_media.html:64
 #: templates/teleforma/inc/document_list.html:22
 #: templates/teleforma/inc/media_list.html:56
+#: templates/teleforma/inc/media_list_pending.html:56
 msgid "Download"
 msgstr "Télécharger"
 
-#: templates/teleforma/annals.html:6 templates/teleforma/annals.html.py:54
+#: templates/teleforma/annals.html:6 templates/teleforma/annals.html.py:53
 #: templates/telemeta/base.html:113
 msgid "Annals"
 msgstr "Annales"
@@ -1349,7 +1380,7 @@ msgstr "Annales"
 msgid "No document"
 msgstr "Aucun document"
 
-#: templates/teleforma/annals.html:70
+#: templates/teleforma/annals.html:69
 #: templates/teleforma/inc/conference_list.html:18
 #: templates/teleforma/inc/document_list.html:20
 msgid "View"
@@ -1365,6 +1396,7 @@ msgstr "Supports écrits"
 #: templates/teleforma/course_document.html:73
 #: templates/teleforma/inc/conference_list.html:25
 #: templates/teleforma/inc/media_list.html:36
+#: templates/teleforma/inc/media_list_pending.html:36
 #: templates/telemeta/inc/module_revisions.html:17
 #: templates/telemeta/lists.html:69 templates/telemeta/search_criteria.html:97
 msgid "Title"
@@ -1396,6 +1428,7 @@ msgstr "Conférences"
 #: templates/teleforma/course_media_video_embed.html:36
 #: templates/teleforma/inc/conference_list.html:28
 #: templates/teleforma/inc/media_list.html:39
+#: templates/teleforma/inc/media_list_pending.html:39
 #: templates/telemeta/inc/user_list.html:48
 msgid "Professor"
 msgstr "Professeur"
@@ -1414,6 +1447,7 @@ msgstr ""
 #: templates/teleforma/course_media.html:140
 #: templates/teleforma/course_media_video_embed.html:39
 #: templates/teleforma/inc/media_list.html:43
+#: templates/teleforma/inc/media_list_pending.html:43
 msgid "Comment"
 msgstr "Commentaire"
 
@@ -1459,6 +1493,7 @@ msgstr ""
 #: templates/teleforma/course_conference_audio.html:70
 #: templates/teleforma/inc/conference_list.html:30
 #: templates/teleforma/inc/media_list.html:41
+#: templates/teleforma/inc/media_list_pending.html:41
 msgid "Begin"
 msgstr "Début"
 
@@ -1467,7 +1502,7 @@ msgid "End"
 msgstr "Fin"
 
 #: templates/teleforma/course_conference_record.html:30
-#: templates/teleforma/courses.html:107
+#: templates/teleforma/courses.html:114
 msgid "Status"
 msgstr "Status"
 
@@ -1483,12 +1518,14 @@ msgstr "Enregistrer et diffuser"
 #: templates/teleforma/course_media.html:28
 #: templates/teleforma/course_media.html:82
 #: templates/teleforma/inc/media_list.html:50
+#: templates/teleforma/inc/media_list_pending.html:50
 msgid " published"
 msgstr " publié"
 
 #: templates/teleforma/course_media.html:35
 #: templates/teleforma/course_media.html:82
 #: templates/teleforma/inc/media_list.html:52
+#: templates/teleforma/inc/media_list_pending.html:52
 msgid " rejected"
 msgstr " rejeté"
 
@@ -1504,16 +1541,16 @@ msgstr "Date de modification"
 msgid "Media ID"
 msgstr "ID Média"
 
-#: templates/teleforma/courses.html:49
+#: templates/teleforma/courses.html:56
 msgid "My notes"
 msgstr "Mes notes"
 
-#: templates/teleforma/courses.html:59
+#: templates/teleforma/courses.html:66
 msgid "New note"
 msgstr "Nouvelle note"
 
 #: templates/teleforma/help.html:11 templates/telemeta/base.html:148
-#: templates/telemeta/base.html.py:161
+#: templates/telemeta/base.html.py:157
 msgid "Help"
 msgstr "Aide"
 
@@ -1524,30 +1561,21 @@ msgstr "Conférences en direct"
 #: templates/teleforma/inc/conference_list.html:19
 #: templates/teleforma/inc/media_list.html:23
 #: templates/teleforma/inc/media_list.html:29
+#: templates/teleforma/inc/media_list_pending.html:23
+#: templates/teleforma/inc/media_list_pending.html:29
 msgid "Click here"
 msgstr "Cliquez ici"
 
 #: templates/teleforma/inc/media_list.html:8
+#: templates/teleforma/inc/media_list_pending.html:8
 msgid "Passed conferences"
 msgstr "Conférences en différé"
 
 #: templates/teleforma/inc/media_list.html:17
+#: templates/teleforma/inc/media_list_pending.html:17
 msgid "Play"
 msgstr "Lire"
 
-#: templates/teleforma/media_pending.html:7
-msgid "Peding media"
-msgstr ""
-
-#: templates/teleforma/media_pending.html:27
-msgid "Testimonials"
-msgstr "Attestations"
-
-#: templates/teleforma/media_pending.html:45
-#, fuzzy
-msgid "No testimonial"
-msgstr "attestation"
-
 #: templates/telemeta/base.html:92 templates/telemeta/base.html.py:101
 msgid "Desk"
 msgstr "Bureau"
@@ -1564,23 +1592,23 @@ msgstr "Messagerie"
 msgid "Admin"
 msgstr ""
 
-#: templates/telemeta/base.html:158
+#: templates/telemeta/base.html:154
 msgid "Profile"
 msgstr "Profil"
 
-#: templates/telemeta/base.html:160
+#: templates/telemeta/base.html:156
 msgid "Lists"
 msgstr ""
 
-#: templates/telemeta/base.html:163
+#: templates/telemeta/base.html:159
 msgid "Sign out"
 msgstr ""
 
-#: templates/telemeta/base.html:205
+#: templates/telemeta/base.html:201
 msgid "Powered by"
 msgstr ""
 
-#: templates/telemeta/base.html:215
+#: templates/telemeta/base.html:211
 msgid "Legal notices"
 msgstr ""
 
@@ -1802,7 +1830,7 @@ msgstr ""
 "Vous n'avez pas accès à cette ressource et avez été redirigé vers votre "
 "bureau."
 
-#: views/core.py:550
+#: views/core.py:560
 msgid "A new live conference has started : "
 msgstr "Une nouvelle conférence en direct a commencé : "
 
@@ -1810,6 +1838,13 @@ msgstr "Une nouvelle conférence en direct a commencé : "
 msgid "You have successfully register your account."
 msgstr ""
 
+#~ msgid "Testimonials"
+#~ msgstr "Attestations"
+
+#, fuzzy
+#~ msgid "No testimonial"
+#~ msgstr "attestation"
+
 #, fuzzy
 #~ msgid "General"
 #~ msgstr "Tweeter général"
index cdb01789d061b0978712e8419cca89af2b076adc..6b1b2cf88aa172de30b90b2c399bd885f0375b9d 100644 (file)
Binary files a/teleforma/locale/fr/LC_MESSAGES/django.mo and b/teleforma/locale/fr/LC_MESSAGES/django.mo differ
index fe2f37650d5056bdb0aa79ebf48f55a0cc1a07d1..515ef143872251682cb627e2324512b74b343ac0 100644 (file)
@@ -6,7 +6,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-07-14 18:26+0200\n"
+"POT-Creation-Date: 2015-07-29 10:41+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: Guillaume Pellerin <yomguy@parisson.com>\n"
 "Language-Team: LANGUAGE <lists@parisson.com>\n"
@@ -16,7 +16,7 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n > 1)\n"
 
-#: admin.py:16 exam/models.py:123 exam/models.py:226 models/ae.py:47
+#: admin.py:18 exam/models.py:123 exam/models.py:225 models/ae.py:47
 #: models/core.py:111 models/core.py:136 models/core.py:255 models/core.py:506
 #: models/core.py:552 models/core.py:594 models/crfpa.py:64
 #: models/crfpa.py:129
@@ -95,149 +95,149 @@ msgstr "pas de fichier"
 msgid "file too large"
 msgstr "fichier trop gros"
 
-#: exam/models.py:121 exam/models.py:225 models/core.py:197 models/core.py:257
+#: exam/models.py:121 exam/models.py:224 models/core.py:197 models/core.py:257
 #: models/core.py:501 models/core.py:590 models/pro.py:45
 msgid "course"
 msgstr "matière"
 
-#: exam/models.py:122 exam/models.py:232
+#: exam/models.py:122 exam/models.py:231
 msgid "corrector"
 msgstr "correcteur"
 
-#: exam/models.py:125
+#: exam/models.py:124
 msgid "value"
 msgstr "valeur"
 
-#: exam/models.py:126 exam/templates/exam/quotas.html:22
+#: exam/models.py:125 exam/templates/exam/quotas.html:22
 msgid "date start"
 msgstr "date de début"
 
-#: exam/models.py:127 exam/templates/exam/quotas.html:23
+#: exam/models.py:126 exam/templates/exam/quotas.html:23
 msgid "date end"
 msgstr "date de fin"
 
-#: exam/models.py:128 exam/models.py:230 models/core.py:399 models/core.py:508
+#: exam/models.py:127 exam/models.py:229 models/core.py:399 models/core.py:508
 #: models/core.py:598
 msgid "type"
 msgstr "type"
 
-#: exam/models.py:131
+#: exam/models.py:130
 msgid "Quota"
 msgstr ""
 
-#: exam/models.py:132 exam/templates/exam/quotas.html:12
+#: exam/models.py:131 exam/templates/exam/quotas.html:12
 msgid "Quotas"
 msgstr ""
 
-#: exam/models.py:181 models/core.py:468 models/pro.py:67
+#: exam/models.py:180 models/core.py:468 models/pro.py:67
 msgid "date added"
 msgstr "date d'ajout"
 
-#: exam/models.py:182 models/core.py:160 models/core.py:469
+#: exam/models.py:181 models/core.py:160 models/core.py:469
 #: models/crfpa.py:212 models/pro.py:68
 msgid "date modified"
 msgstr "date de modification"
 
-#: exam/models.py:183
+#: exam/models.py:182
 msgid "UUID"
 msgstr ""
 
-#: exam/models.py:184
+#: exam/models.py:183
 msgid "MIME type"
 msgstr "Type MIME"
 
-#: exam/models.py:185
+#: exam/models.py:184
 msgid "sha1"
 msgstr ""
 
-#: exam/models.py:201
+#: exam/models.py:200
 msgid "script"
 msgstr "copie"
 
-#: exam/models.py:202
+#: exam/models.py:201
 msgid "Page file"
 msgstr "Fichier de page"
 
-#: exam/models.py:203
+#: exam/models.py:202
 msgid "Image file"
 msgstr "Fichier image"
 
-#: exam/models.py:204 models/pro.py:49 models/pro.py:85
+#: exam/models.py:203 models/pro.py:49 models/pro.py:85
 msgid "rank"
 msgstr "rang"
 
-#: exam/models.py:207
+#: exam/models.py:206
 msgid "Page"
 msgstr "Page"
 
-#: exam/models.py:208
+#: exam/models.py:207
 msgid "Pages"
 msgstr "Pages"
 
-#: exam/models.py:213 models/core.py:93 models/core.py:106 models/core.py:128
+#: exam/models.py:212 models/core.py:93 models/core.py:106 models/core.py:128
 #: models/core.py:141 models/core.py:239 models/core.py:484 models/crfpa.py:47
 #: models/crfpa.py:63
 msgid "name"
 msgstr "nom"
 
-#: exam/models.py:216
+#: exam/models.py:215
 msgid "ScriptType"
 msgstr "Type de copie"
 
-#: exam/models.py:217
+#: exam/models.py:216
 msgid "ScriptTypes"
 msgstr "Types de copies"
 
-#: exam/models.py:228 models/core.py:261 models/core.py:510
+#: exam/models.py:227 models/core.py:261 models/core.py:510
 msgid "session"
 msgstr "séance"
 
-#: exam/models.py:231
+#: exam/models.py:230
 msgid "author"
 msgstr "auteur"
 
-#: exam/models.py:233
+#: exam/models.py:232
 msgid "PDF file"
 msgstr "Fichier PDF"
 
-#: exam/models.py:234
+#: exam/models.py:233
 msgid "Box UUID"
 msgstr ""
 
-#: exam/models.py:235
+#: exam/models.py:234
 msgid "score"
 msgstr "note"
 
-#: exam/models.py:236 models/pro.py:125
+#: exam/models.py:235 models/pro.py:125
 msgid "comments"
 msgstr "commentaires"
 
-#: exam/models.py:237 models/core.py:270 models/pro.py:48 models/pro.py:88
+#: exam/models.py:236 models/core.py:270 models/pro.py:48 models/pro.py:88
 #: models/pro.py:104
 msgid "status"
 msgstr "status"
 
-#: exam/models.py:238
+#: exam/models.py:237
 msgid "reason"
 msgstr "raison"
 
-#: exam/models.py:239
+#: exam/models.py:238
 msgid "date submitted"
 msgstr "date de soumission"
 
-#: exam/models.py:240
+#: exam/models.py:239
 msgid "date marked"
 msgstr "date de correction"
 
-#: exam/models.py:241
+#: exam/models.py:240
 msgid "date rejected"
 msgstr "date de rejet"
 
-#: exam/models.py:242
+#: exam/models.py:241
 msgid "URL"
 msgstr ""
 
-#: exam/models.py:246 exam/templates/exam/inc/script_list.html:14
+#: exam/models.py:245 exam/templates/exam/inc/script_list.html:14
 #: templates/teleforma/course.html:50
 #: templates/teleforma/course_conference.html:40
 #: templates/teleforma/course_conference.html:71
@@ -247,6 +247,7 @@ msgstr ""
 #: templates/teleforma/course_media_video_embed.html:34
 #: templates/teleforma/inc/conference_list.html:26
 #: templates/teleforma/inc/media_list.html:37
+#: templates/teleforma/inc/media_list_pending.html:37
 msgid "Session"
 msgstr "Séance"
 
@@ -340,6 +341,7 @@ msgstr ""
 "serait pas prise en compte."
 
 #: exam/templates/exam/quotas.html:24 exam/templates/exam/scripts.html:25
+#: templates/teleforma/courses.html:48
 msgid "Pending"
 msgstr "En attente"
 
@@ -355,23 +357,23 @@ msgstr "Valeur"
 msgid "Level"
 msgstr "Niveau"
 
-#: exam/templates/exam/score_form.html:32 exam/templates/exam/scores.html:35
+#: exam/templates/exam/score_form.html:32 exam/templates/exam/scores.html:37
 msgid "New score"
 msgstr "Nouvelle note"
 
 #: exam/templates/exam/score_form.html:60
-#: exam/templates/exam/script_form.html:68
+#: exam/templates/exam/script_form.html:77
 #: templates/registration/registration_form.html:21
 msgid "Submit"
 msgstr "Soumettre"
 
-#: exam/templates/exam/scores.html:18 templates/teleforma/annals.html:15
+#: exam/templates/exam/scores.html:20 templates/teleforma/annals.html:15
 #: templates/telemeta/profile_detail.html:16
 msgid "My courses"
 msgstr "Mes matières"
 
-#: exam/templates/exam/scores.html:46 exam/templates/exam/scripts.html:28
-#: templates/telemeta/base.html:133 templates/telemeta/base.html.py:135
+#: exam/templates/exam/scores.html:48 templates/telemeta/base.html:133
+#: templates/telemeta/base.html.py:135
 msgid "Scores"
 msgstr "Notes"
 
@@ -408,12 +410,12 @@ msgid "Mark"
 msgstr "Note"
 
 #: exam/templates/exam/script_detail.html:144
-#: templates/postman/base_write.html:56
+#: templates/postman/base_write.html:63
 #: templates/teleforma/inc/chat_room.html:13
 msgid "Send"
 msgstr "Envoyer"
 
-#: exam/templates/exam/script_form.html:32 exam/templates/exam/scripts.html:37
+#: exam/templates/exam/script_form.html:32 exam/templates/exam/scripts.html:36
 msgid "New script"
 msgstr "Nouvelle copie"
 
@@ -425,23 +427,31 @@ msgstr "Copie vierge"
 msgid "Answers"
 msgstr "Réponses"
 
-#: exam/templates/exam/scripts.html:68
+#: exam/templates/exam/scripts.html:67
 msgid "No scripts"
 msgstr "Aucune copie"
 
-#: exam/views.py:94
+#: exam/views.py:99
 msgid "Pending scripts"
 msgstr "Copies en attente"
 
-#: exam/views.py:126
+#: exam/views.py:125
 msgid "Treated scripts"
 msgstr "Copie traitées"
 
-#: exam/views.py:146
+#: exam/views.py:147
 msgid "Rejected scripts"
 msgstr "Copies rejetées"
 
-#: exam/views.py:162
+#: exam/views.py:165
+msgid ""
+"Error: you have already submitted a script for this session, the same course "
+"and the same type!"
+msgstr ""
+"Erreur : vous avez déjà soumis une copie du même type pour la même matière "
+"et la même session."
+
+#: exam/views.py:169
 msgid ""
 "You have successfully submitted your script. It will be processed in the "
 "next hours."
@@ -449,7 +459,7 @@ msgstr ""
 "Vous avez correctement soumis votre copie. Elle sera traitée dans les "
 "prochaines heures puis corrigée."
 
-#: exam/views.py:166
+#: exam/views.py:173
 msgid ""
 "There was a problem with your submission. Please try again, later if "
 "possible."
@@ -457,7 +467,7 @@ msgstr ""
 "Il y a une une erreur lors de votre soumission de copie. Merci de vérifier "
 "votre fichier ou de réessayer plus tard."
 
-#: exam/views.py:267
+#: exam/views.py:279
 msgid "all courses"
 msgstr "toutes les matières"
 
@@ -989,11 +999,33 @@ msgstr ""
 msgid "No messages."
 msgstr "Messages"
 
-#: templates/postman/base_write.html:31
+#: templates/postman/base_write.html:30
+msgid ""
+"Vous pouvez ici échanger des messages avec les professeurs et les "
+"administrateurs."
+msgstr ""
+
+#: templates/postman/base_write.html:32
+msgid ""
+"Pour les questions concernant l'organisation des cours, le planning ou les "
+"documents de cours, adressez-vous à <b>Admin-CRFPA</b>."
+msgstr ""
+
+#: templates/postman/base_write.html:34
+msgid ""
+"Pour les questions concernant uniquement l'accès à la plateforme et aux "
+"médias vidéo ou audio, lire d'abord"
+msgstr ""
+
+#: templates/postman/base_write.html:34
+msgid "puis adressez-vous à <b>Support technique</b>."
+msgstr ""
+
+#: templates/postman/base_write.html:38
 msgid "to an administrator"
 msgstr "à un administrateur"
 
-#: templates/postman/base_write.html:39
+#: templates/postman/base_write.html:46
 msgid "to a professor"
 msgstr "à un professeur"
 
@@ -1333,13 +1365,14 @@ msgid "Registration"
 msgstr "Inscription"
 
 #: templates/registration/registration_complete.html:23
-#: templates/teleforma/annals.html:74 templates/teleforma/course_media.html:64
+#: templates/teleforma/annals.html:73 templates/teleforma/course_media.html:64
 #: templates/teleforma/inc/document_list.html:22
 #: templates/teleforma/inc/media_list.html:56
+#: templates/teleforma/inc/media_list_pending.html:56
 msgid "Download"
 msgstr "Télécharger"
 
-#: templates/teleforma/annals.html:6 templates/teleforma/annals.html.py:54
+#: templates/teleforma/annals.html:6 templates/teleforma/annals.html.py:53
 #: templates/telemeta/base.html:113
 msgid "Annals"
 msgstr "Annales"
@@ -1349,7 +1382,7 @@ msgstr "Annales"
 msgid "No document"
 msgstr "Aucun document"
 
-#: templates/teleforma/annals.html:70
+#: templates/teleforma/annals.html:69
 #: templates/teleforma/inc/conference_list.html:18
 #: templates/teleforma/inc/document_list.html:20
 msgid "View"
@@ -1365,6 +1398,7 @@ msgstr "Supports écrits"
 #: templates/teleforma/course_document.html:73
 #: templates/teleforma/inc/conference_list.html:25
 #: templates/teleforma/inc/media_list.html:36
+#: templates/teleforma/inc/media_list_pending.html:36
 #: templates/telemeta/inc/module_revisions.html:17
 #: templates/telemeta/lists.html:69 templates/telemeta/search_criteria.html:97
 msgid "Title"
@@ -1396,6 +1430,7 @@ msgstr "Conférences"
 #: templates/teleforma/course_media_video_embed.html:36
 #: templates/teleforma/inc/conference_list.html:28
 #: templates/teleforma/inc/media_list.html:39
+#: templates/teleforma/inc/media_list_pending.html:39
 #: templates/telemeta/inc/user_list.html:48
 msgid "Professor"
 msgstr "Professeur"
@@ -1414,6 +1449,7 @@ msgstr ""
 #: templates/teleforma/course_media.html:140
 #: templates/teleforma/course_media_video_embed.html:39
 #: templates/teleforma/inc/media_list.html:43
+#: templates/teleforma/inc/media_list_pending.html:43
 msgid "Comment"
 msgstr "Commentaire"
 
@@ -1459,6 +1495,7 @@ msgstr ""
 #: templates/teleforma/course_conference_audio.html:70
 #: templates/teleforma/inc/conference_list.html:30
 #: templates/teleforma/inc/media_list.html:41
+#: templates/teleforma/inc/media_list_pending.html:41
 msgid "Begin"
 msgstr "Début"
 
@@ -1467,7 +1504,7 @@ msgid "End"
 msgstr "Fin"
 
 #: templates/teleforma/course_conference_record.html:30
-#: templates/teleforma/courses.html:107
+#: templates/teleforma/courses.html:114
 msgid "Status"
 msgstr "Status"
 
@@ -1483,12 +1520,14 @@ msgstr "Enregistrer et diffuser"
 #: templates/teleforma/course_media.html:28
 #: templates/teleforma/course_media.html:82
 #: templates/teleforma/inc/media_list.html:50
+#: templates/teleforma/inc/media_list_pending.html:50
 msgid " published"
 msgstr " publié"
 
 #: templates/teleforma/course_media.html:35
 #: templates/teleforma/course_media.html:82
 #: templates/teleforma/inc/media_list.html:52
+#: templates/teleforma/inc/media_list_pending.html:52
 msgid " rejected"
 msgstr " rejeté"
 
@@ -1504,16 +1543,16 @@ msgstr "Date de modification"
 msgid "Media ID"
 msgstr "ID Média"
 
-#: templates/teleforma/courses.html:49
+#: templates/teleforma/courses.html:56
 msgid "My notes"
 msgstr "Mes notes"
 
-#: templates/teleforma/courses.html:59
+#: templates/teleforma/courses.html:66
 msgid "New note"
 msgstr "Nouvelle note"
 
 #: templates/teleforma/help.html:11 templates/telemeta/base.html:148
-#: templates/telemeta/base.html.py:161
+#: templates/telemeta/base.html.py:157
 msgid "Help"
 msgstr "Aide"
 
@@ -1524,30 +1563,21 @@ msgstr "Conférences en direct"
 #: templates/teleforma/inc/conference_list.html:19
 #: templates/teleforma/inc/media_list.html:23
 #: templates/teleforma/inc/media_list.html:29
+#: templates/teleforma/inc/media_list_pending.html:23
+#: templates/teleforma/inc/media_list_pending.html:29
 msgid "Click here"
 msgstr "Cliquez ici"
 
 #: templates/teleforma/inc/media_list.html:8
+#: templates/teleforma/inc/media_list_pending.html:8
 msgid "Passed conferences"
 msgstr "Conférences en différé"
 
 #: templates/teleforma/inc/media_list.html:17
+#: templates/teleforma/inc/media_list_pending.html:17
 msgid "Play"
 msgstr "Lire"
 
-#: templates/teleforma/media_pending.html:7
-msgid "Peding media"
-msgstr ""
-
-#: templates/teleforma/media_pending.html:27
-msgid "Testimonials"
-msgstr "Attestations"
-
-#: templates/teleforma/media_pending.html:45
-#, fuzzy
-msgid "No testimonial"
-msgstr "attestation"
-
 #: templates/telemeta/base.html:92 templates/telemeta/base.html.py:101
 msgid "Desk"
 msgstr "Bureau"
@@ -1564,23 +1594,23 @@ msgstr "Messagerie"
 msgid "Admin"
 msgstr ""
 
-#: templates/telemeta/base.html:158
+#: templates/telemeta/base.html:154
 msgid "Profile"
 msgstr "Profil"
 
-#: templates/telemeta/base.html:160
+#: templates/telemeta/base.html:156
 msgid "Lists"
 msgstr ""
 
-#: templates/telemeta/base.html:163
+#: templates/telemeta/base.html:159
 msgid "Sign out"
 msgstr ""
 
-#: templates/telemeta/base.html:205
+#: templates/telemeta/base.html:201
 msgid "Powered by"
 msgstr ""
 
-#: templates/telemeta/base.html:215
+#: templates/telemeta/base.html:211
 msgid "Legal notices"
 msgstr ""
 
@@ -1802,7 +1832,7 @@ msgstr ""
 "Vous n'avez pas accès à cette ressource et avez été redirigé vers votre "
 "bureau."
 
-#: views/core.py:550
+#: views/core.py:560
 msgid "A new live conference has started : "
 msgstr "Une nouvelle conférence en direct a commencé : "
 
@@ -1810,6 +1840,13 @@ msgstr "Une nouvelle conférence en direct a commencé : "
 msgid "You have successfully register your account."
 msgstr ""
 
+#~ msgid "Testimonials"
+#~ msgstr "Attestations"
+
+#, fuzzy
+#~ msgid "No testimonial"
+#~ msgstr "attestation"
+
 #, fuzzy
 #~ msgid "General"
 #~ msgstr "Tweeter général"