def teacheradmin_emails(request, course_slug): course = get_object_or_404(Course, slug=course_slug) is_enrolled = course.students.filter(id=request.user.id).exists() students = course.students.count() if request.method == 'POST': form = MassiveEmailForm(request.POST) if form.is_valid(): form.instance.course = course form.instance.datetime = datetime.now() form.save() form.instance.send_in_batches(send_massive_email_task) messages.success(request, _("The email has been queued, and it will be send in batches to every student in the course.")) return HttpResponseRedirect(reverse('teacheradmin_stats', args=[course_slug])) else: form = MassiveEmailForm() return render_to_response('teacheradmin/emails.html', { 'course': course, 'is_enrolled': is_enrolled, 'students': students, 'form': form, }, context_instance=RequestContext(request))
def teacheradmin_emails(request, course_slug): course = get_object_or_404(Course, slug=course_slug) is_enrolled = course.students.filter(id=request.user.id).exists() students = course.students.count() if request.method == 'POST': form = MassiveEmailForm(request.POST) if form.is_valid(): form.instance.course = course form.instance.datetime = datetime.now() form.save() form.instance.send_in_batches(send_massive_email_task) messages.success( request, _("The email has been queued, and it will be send in batches to every student in the course." )) return HttpResponseRedirect( reverse('teacheradmin_stats', args=[course_slug])) else: form = MassiveEmailForm() return render_to_response('teacheradmin/emails.html', { 'course': course, 'is_enrolled': is_enrolled, 'students': students, 'form': form, }, context_instance=RequestContext(request))
def teacheradmin_emails(request, course_slug): course = get_object_or_404(Course, slug=course_slug) is_enrolled = course.students.filter(id=request.user.id).exists() students = course.students.count() if request.method == 'POST': form = MassiveEmailForm(request.POST) if form.is_valid(): form.instance.course = course form.instance.datetime = datetime.now() form.save() batch = 30 try: batch = settings.MASSIVE_EMAIL_BATCH_SIZE except AttributeError: pass batches = (course.students.count() / batch) + 1 students = course.students.all() for i in range(batches): init = batch * i end = init + batch students_ids = [s.id for s in students[init:end]] send_massive_email_task.delay(form.instance.id, students_ids) messages.success( request, _("The email has been queued, and it will be send in batches to every student in the course." )) return HttpResponseRedirect( reverse('teacheradmin_stats', args=[course_slug])) else: form = MassiveEmailForm() return render_to_response('teacheradmin/emails.html', { 'course': course, 'is_enrolled': is_enrolled, 'students': students, 'form': form, }, context_instance=RequestContext(request))
def teacheradmin_emails(request, course_slug): course = get_object_or_404(Course, slug=course_slug) is_enrolled = course.students.filter(id=request.user.id).exists() students = course.students.count() data = None if request.method == 'POST': data = request.POST massive_emails = course.massive_emails.all() form = MassiveEmailForm(data=data, course=course) remain_send_emails = form.remain_send_emails(massive_emails) if remain_send_emails > 0 and form.is_valid(): form.save() messages.success(request, _("The email has been queued, and it will be send in batches to every student in the course.")) return HttpResponseRedirect(reverse('teacheradmin_stats', args=[course_slug])) return render_to_response('teacheradmin/emails.html', { 'course': course, 'massive_emails': massive_emails, 'remain_send_emails': remain_send_emails, 'is_enrolled': is_enrolled, 'students': students, 'form': form, }, context_instance=RequestContext(request))
def teacheradmin_emails(request, course_slug): course = get_object_or_404(Course, slug=course_slug) is_enrolled = course.students.filter(id=request.user.id).exists() students = course.students.count() if request.method == 'POST': form = MassiveEmailForm(request.POST) if form.is_valid(): form.instance.course = course form.instance.datetime = datetime.now() form.save() batch = 30 try: batch = settings.MASSIVE_EMAIL_BATCH_SIZE except AttributeError: pass batches = (course.students.count() / batch) + 1 students = course.students.all() for i in range(batches): init = batch * i end = init + batch students_ids = [s.id for s in students[init:end]] send_massive_email_task.delay(form.instance.id, students_ids) messages.success(request, _("The email has been queued, and it will be send in batches to every student in the course.")) return HttpResponseRedirect(reverse('teacheradmin_stats', args=[course_slug])) else: form = MassiveEmailForm() return render_to_response('teacheradmin/emails.html', { 'course': course, 'is_enrolled': is_enrolled, 'students': students, 'form': form, }, context_instance=RequestContext(request))