@@ -68,13 +68,15 @@ def upload_file(request, slug):
6868 form = UploadFileForm ()
6969
7070 multiform = MultipleUploadFileForm ()
71+ bulk_form = BulkFilesForm ()
7172
7273 return render (
7374 request ,
7475 "documents/document_upload.html" ,
7576 {
7677 "form" : form ,
7778 "multiform" : multiform ,
79+ "bulk_form" : bulk_form ,
7880 "course" : course ,
7981 },
8082 )
@@ -305,18 +307,59 @@ def submit_bulk(request, slug):
305307 form = BulkFilesForm (request .POST )
306308
307309 if form .is_valid ():
308- BulkDocuments .objects .create (
309- url = form .cleaned_data ["url" ], course = course , user = request .user
310+ url = form .cleaned_data ["url" ]
311+
312+ # Verify Duplicate Submission URL
313+ if BulkDocuments .objects .filter (
314+ url = url , course = course , processed = False
315+ ).exists ():
316+ form .add_error (
317+ "url" ,
318+ "Ce lien a déjà été soumis pour ce cours et est en attente de traitement." ,
319+ )
320+ return render (
321+ request ,
322+ "documents/document_upload.html" ,
323+ {
324+ "course" : course ,
325+ "form" : UploadFileForm (),
326+ "multiform" : MultipleUploadFileForm (),
327+ "bulk_form" : form ,
328+ },
329+ # status=422 mandatory for Turbo: forces the display of validation errors (Turbo ignores 200 codes)
330+ status = 422 ,
331+ )
332+
333+ # Succes submit URL
334+ BulkDocuments .objects .create (url = url , course = course , user = request .user )
335+ success_url = (
336+ reverse ("document_submit_bulk" , args = [course .slug ]) + "?success=true"
310337 )
338+ return HttpResponseRedirect (success_url )
311339
340+ else :
341+ # Bad URL submit
312342 return render (
313343 request ,
314- "documents/document_bulk .html" ,
344+ "documents/document_upload .html" ,
315345 {
316346 "course" : course ,
347+ "form" : UploadFileForm (),
348+ "multiform" : MultipleUploadFileForm (),
349+ "bulk_form" : form ,
317350 },
351+ status = 422 ,
318352 )
319353
354+ if "success" in request .GET :
355+ return render (
356+ request ,
357+ "documents/document_bulk.html" ,
358+ {
359+ "course" : course ,
360+ },
361+ )
362+
320363 return HttpResponseRedirect (reverse ("document_put" , args = [course .slug ]))
321364
322365
0 commit comments