Updated intructor unenroll

If student is in refund window, refund student,
update mode to audit, and set is_active false. if
student is not in refund window, do not refund student
do not change mode, and set is_active to false.
If professional do not change mode after refund just
change is_active to false.

-
This commit is contained in:
ayub-khan
2018-06-27 12:34:03 +05:00
parent bab76429e2
commit d0d3e3427e
3 changed files with 69 additions and 5 deletions

View File

@@ -10,7 +10,9 @@ from django.conf import settings
from django.contrib.auth import get_user_model
from django.urls import reverse
from django.utils.translation import ugettext as _
from opaque_keys.edx.keys import CourseKey
from course_modes.models import CourseMode
from openedx.core.djangoapps.commerce.utils import ecommerce_api_client, is_commerce_service_configured
from openedx.core.djangoapps.site_configuration import helpers as configuration_helpers
from openedx.core.djangoapps.theming import helpers as theming_helpers
@@ -208,13 +210,14 @@ def refund_entitlement(course_entitlement):
return False
def refund_seat(course_enrollment):
def refund_seat(course_enrollment, change_mode=False):
"""
Attempt to initiate a refund for any orders associated with the seat being unenrolled,
using the commerce service.
Arguments:
course_enrollment (CourseEnrollment): a student enrollment
change_mode (Boolean): change the course mode to free mode or not
Returns:
A list of the external service's IDs for any refunds that were initiated
@@ -244,6 +247,10 @@ def refund_seat(course_enrollment):
mode=course_enrollment.mode,
user=enrollee,
)
if change_mode and CourseMode.can_auto_enroll(course_id=CourseKey.from_string(course_key_str)):
course_enrollment.update_enrollment(mode=CourseMode.auto_enroll_mode(course_id=course_key_str),
is_active=False, skip_refund=True)
course_enrollment.save()
else:
log.info('No refund opened for user [%s], course [%s]', enrollee.id, course_key_str)