Code Duplication    Length = 22-24 lines in 2 locations

web/opensubmit/views.py 2 locations

@@ 378-401 (lines=24) @@
375
    receivers_qs = users_qs.order_by('email').distinct().values('first_name', 'last_name', 'email')
376
    receivers = [receiver for receiver in receivers_qs]
377
    request.session['mail_receivers'] = receivers
378
    return render(request, 'mail_form.html', {'receivers': receivers, 'mailform': MailForm()})
379
380
381
@login_required
382
@staff_member_required
383
def mail_course(request, course_id):
384
    course = get_object_or_404(Course, pk=course_id)
385
    users = User.objects.filter(profile__courses__pk=course.pk)
386
    if users.count() == 0:
387
        messages.warning(request, 'No students in this course.')
388
        return redirect('teacher:index')
389
    else:
390
        return _mail_form(request, users)
391
392
393
@login_required
394
@staff_member_required
395
def mail_students(request, student_ids):
396
    id_list = [int(val) for val in student_ids.split(',')]
397
    users = User.objects.filter(pk__in=id_list).distinct()
398
    return _mail_form(request, users)
399
400
401
@login_required
402
@staff_member_required
403
def mail_preview(request):
404
    def _replace_placeholders(text, user):
@@ 404-425 (lines=22) @@
401
@login_required
402
@staff_member_required
403
def mail_preview(request):
404
    def _replace_placeholders(text, user):
405
        return text.replace("#FIRSTNAME#", user['first_name'].strip()) \
406
                   .replace("#LASTNAME#", user['last_name'].strip())
407
408
    if 'mail_receivers' in request.session and \
409
       'subject' in request.POST and \
410
       'message' in request.POST:
411
        data = [{'subject': _replace_placeholders(request.POST['subject'], receiver),
412
                 'message': _replace_placeholders(request.POST['message'], receiver),
413
                 'to': receiver['email']
414
                 } for receiver in request.session['mail_receivers']]
415
416
        request.session['mail_data'] = data
417
        del request.session['mail_receivers']
418
        return render(request, 'mail_preview.html', {'data': data})
419
    else:
420
        messages.error(request, 'Error while rendering mail preview.')
421
        return redirect('teacher:index')
422
423
424
@login_required
425
@staff_member_required
426
def mail_send(request):
427
    if 'mail_data' in request.session:
428
        tosend = [[d['subject'],