Code Duplication    Length = 22-24 lines in 2 locations

web/opensubmit/views.py 2 locations

@@ 378-401 (lines=24) @@
375
               .replace("#LASTNAME#", user.last_name.strip())   \
376
               .replace("#COURSENAME#", course.title.strip())
377
378
379
@login_required
380
@staff_member_required
381
def mail2all(request, course_id):
382
    course = get_object_or_404(Course, pk=course_id)
383
    # Re-compute list of recipients on every request, for latest updates
384
    students = User.objects.filter(profile__courses__pk=course_id)
385
    maillist = ','.join(students.values_list('email', flat=True))
386
387
    if request.method == "POST":
388
        if 'subject' in request.POST and 'message' in request.POST:
389
            # Initial form submission, render preview
390
            request.session['subject'] = request.POST['subject']
391
            request.session['message'] = request.POST['message']
392
            student = students[0]
393
            preview_subject = _replace_placeholders(
394
                request.POST['subject'], student, course)
395
            preview_message = _replace_placeholders(
396
                request.POST['message'], student, course)
397
            return render(request, 'mail_preview.html',
398
                          {'preview_subject': preview_subject,
399
                           'preview_message': preview_message,
400
                           'preview_from': request.user.email,
401
                           'course': course})
402
        elif 'subject' in request.session and 'message' in request.session:
403
            # Positive preview, send it
404
            data = [(_replace_placeholders(request.session['subject'], s, course),
@@ 404-425 (lines=22) @@
401
                           'course': course})
402
        elif 'subject' in request.session and 'message' in request.session:
403
            # Positive preview, send it
404
            data = [(_replace_placeholders(request.session['subject'], s, course),
405
                     _replace_placeholders(
406
                         request.session['message'], s, course),
407
                     request.user.email,
408
                     [s.email]) for s in students]
409
            sent = send_mass_mail(data, fail_silently=True)
410
            messages.add_message(request, messages.INFO,
411
                                 '%u message(s) sent.' % sent)
412
            return redirect('teacher:index')
413
414
    # show empty form in all other cases
415
    mailform = MailForm()
416
    return render(request, 'mail_form.html', {'maillist': maillist, 'course': course, 'mailform': mailform})
417
418
419
@login_required
420
@staff_member_required
421
def coursearchive(request, course_id):
422
    '''
423
        Provides all course submissions and their information as archive download.
424
        For archiving purposes, since withdrawn submissions are included.
425
    '''
426
    output = io.BytesIO()
427
    z = zipfile.ZipFile(output, 'w')
428