Fix change enrollment command for credit.

Get provider id from ecommerce upon changing enrollment to credit
instead of setting course_key org.

LEARNER-6643
This commit is contained in:
Waheed Ahmed
2019-03-08 17:05:25 +05:00
parent 8f6cde89cd
commit 458e8482ea
5 changed files with 50 additions and 38 deletions

View File

@@ -8,9 +8,8 @@ from opaque_keys import InvalidKeyError
from opaque_keys.edx.keys import CourseKey
from six import text_type
from student.models import CourseEnrollment, User
from student.models import CourseEnrollmentAttribute
from openedx.core.djangoapps.credit.email_utils import get_credit_provider_attribute_values
from student.models import CourseEnrollment, CourseEnrollmentAttribute, User
logger = logging.getLogger(__name__) # pylint: disable=invalid-name
@@ -102,6 +101,17 @@ class Command(BaseCommand):
""" Update enrollments for a specific user identifier (email or username). """
users = options[identifier].split(",")
credit_provider_attr = {}
if options['to_mode'] == 'credit':
provider_ids = get_credit_provider_attribute_values(
enrollment_args.get('course_id'), 'id'
)
credit_provider_attr = {
'namespace': 'credit',
'name': 'provider_id',
'value': provider_ids[0],
}
for identified_user in users:
logger.info(identified_user)
@@ -119,13 +129,10 @@ class Command(BaseCommand):
enrollment.update_enrollment(mode=options['to_mode'])
enrollment.save()
if options['to_mode'] == 'credit':
enrollment_attrs.append({
'namespace': 'credit',
'name': 'provider_id',
'value': enrollment_args['course_id'].org,
})
CourseEnrollmentAttribute.add_enrollment_attr(enrollment=enrollment,
data_list=enrollment_attrs)
enrollment_attrs.append(credit_provider_attr)
CourseEnrollmentAttribute.add_enrollment_attr(
enrollment=enrollment, data_list=enrollment_attrs
)
if options['noop']:
raise RollbackException('Forced rollback.')

View File

@@ -233,7 +233,7 @@ class CreditCourseDashboardTest(ModuleStoreTestCase):
self._make_eligible()
# The user should have the option to purchase credit
with patch('student.views.dashboard.get_credit_provider_display_names') as mock_method:
with patch('student.views.dashboard.get_credit_provider_attribute_values') as mock_method:
mock_method.return_value = providers_list
response = self._load_dashboard()

View File

@@ -33,7 +33,7 @@ from openedx.core.djangoapps.catalog.utils import (
get_pseudo_session_for_entitlement,
get_visible_sessions_for_entitlement
)
from openedx.core.djangoapps.credit.email_utils import get_credit_provider_display_names, make_providers_strings
from openedx.core.djangoapps.credit.email_utils import get_credit_provider_attribute_values, make_providers_strings
from openedx.core.djangoapps.programs.models import ProgramsApiConfig
from openedx.core.djangoapps.programs.utils import ProgramDataExtender, ProgramProgressMeter
from openedx.core.djangoapps.site_configuration import helpers as configuration_helpers
@@ -483,7 +483,7 @@ def _credit_statuses(user, course_enrollments):
statuses = {}
for eligibility in credit_api.get_eligibilities_for_user(user.username):
course_key = CourseKey.from_string(text_type(eligibility["course_key"]))
providers_names = get_credit_provider_display_names(course_key)
providers_names = get_credit_provider_attribute_values(course_key, 'display_name')
status = {
"course_key": text_type(course_key),
"eligible": True,