Merge pull request #10251 from mitocw/fix/jf/enroll-coach-on-create-ccx
Enroll the coach in the CCX on creation
This commit is contained in:
@@ -6,6 +6,7 @@ import json
|
||||
import re
|
||||
import pytz
|
||||
import ddt
|
||||
import urlparse
|
||||
from mock import patch, MagicMock
|
||||
from nose.plugins.attrib import attr
|
||||
|
||||
@@ -14,12 +15,13 @@ from courseware.courses import get_course_by_id
|
||||
from courseware.tests.factories import StudentModuleFactory
|
||||
from courseware.tests.helpers import LoginEnrollmentTestCase
|
||||
from courseware.tabs import get_course_tab_list
|
||||
from django.core.urlresolvers import reverse
|
||||
from django.core.urlresolvers import reverse, resolve
|
||||
from django.utils.timezone import UTC
|
||||
from django.test.utils import override_settings
|
||||
from django.test import RequestFactory
|
||||
from edxmako.shortcuts import render_to_response
|
||||
from request_cache.middleware import RequestCache
|
||||
from opaque_keys.edx.keys import CourseKey
|
||||
from student.roles import CourseCcxCoachRole
|
||||
from student.models import (
|
||||
CourseEnrollment,
|
||||
@@ -200,7 +202,7 @@ class TestCoachDashboard(SharedModuleStoreTestCase, LoginEnrollmentTestCase):
|
||||
self.make_coach()
|
||||
url = reverse(
|
||||
'ccx_coach_dashboard',
|
||||
kwargs={'course_id': self.course.id.to_deprecated_string()})
|
||||
kwargs={'course_id': unicode(self.course.id)})
|
||||
response = self.client.get(url)
|
||||
self.assertEqual(response.status_code, 200)
|
||||
self.assertTrue(re.search(
|
||||
@@ -212,15 +214,26 @@ class TestCoachDashboard(SharedModuleStoreTestCase, LoginEnrollmentTestCase):
|
||||
Create CCX. Follow redirect to coach dashboard, confirm we see
|
||||
the coach dashboard for the new CCX.
|
||||
"""
|
||||
|
||||
self.make_coach()
|
||||
url = reverse(
|
||||
'create_ccx',
|
||||
kwargs={'course_id': self.course.id.to_deprecated_string()})
|
||||
kwargs={'course_id': unicode(self.course.id)})
|
||||
|
||||
response = self.client.post(url, {'name': 'New CCX'})
|
||||
self.assertEqual(response.status_code, 302)
|
||||
url = response.get('location') # pylint: disable=no-member
|
||||
response = self.client.get(url)
|
||||
self.assertEqual(response.status_code, 200)
|
||||
|
||||
# Get the ccx_key
|
||||
path = urlparse.urlparse(url).path
|
||||
resolver = resolve(path)
|
||||
ccx_key = resolver.kwargs['course_id']
|
||||
|
||||
course_key = CourseKey.from_string(ccx_key)
|
||||
|
||||
self.assertTrue(CourseEnrollment.is_enrolled(self.coach, course_key))
|
||||
self.assertTrue(re.search('id="ccx-schedule"', response.content))
|
||||
|
||||
@SharedModuleStoreTestCase.modifies_courseware
|
||||
|
||||
@@ -47,7 +47,6 @@ from instructor.enrollment import (
|
||||
unenroll_email,
|
||||
get_email_params,
|
||||
)
|
||||
|
||||
from .models import CustomCourseForEdX
|
||||
from .overrides import (
|
||||
get_override_for_ccx,
|
||||
@@ -56,7 +55,6 @@ from .overrides import (
|
||||
bulk_delete_ccx_override_fields,
|
||||
)
|
||||
|
||||
|
||||
log = logging.getLogger(__name__)
|
||||
TODAY = datetime.datetime.today # for patching in tests
|
||||
|
||||
@@ -183,7 +181,19 @@ def create_ccx(request, course, ccx=None):
|
||||
override_field_for_ccx(ccx, vertical, hidden, True)
|
||||
|
||||
ccx_id = CCXLocator.from_course_locator(course.id, ccx.id) # pylint: disable=no-member
|
||||
|
||||
url = reverse('ccx_coach_dashboard', kwargs={'course_id': ccx_id})
|
||||
|
||||
# Enroll the coach in the course
|
||||
email_params = get_email_params(course, auto_enroll=True, course_key=ccx_id, display_name=ccx.display_name)
|
||||
enroll_email(
|
||||
course_id=ccx_id,
|
||||
student_email=request.user.email,
|
||||
auto_enroll=True,
|
||||
email_students=True,
|
||||
email_params=email_params,
|
||||
)
|
||||
|
||||
return redirect(url)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user