From 0a3faf08a0972469426fbdf6c5b113a77147ef25 Mon Sep 17 00:00:00 2001 From: SaadYousaf Date: Wed, 26 Aug 2020 16:57:23 +0500 Subject: [PATCH] add mgmt command to update entitlement mode. --- .../commands/update_entitlement_mode.py | 66 +++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 common/djangoapps/entitlements/management/commands/update_entitlement_mode.py diff --git a/common/djangoapps/entitlements/management/commands/update_entitlement_mode.py b/common/djangoapps/entitlements/management/commands/update_entitlement_mode.py new file mode 100644 index 0000000000..f00f0cc662 --- /dev/null +++ b/common/djangoapps/entitlements/management/commands/update_entitlement_mode.py @@ -0,0 +1,66 @@ +""" +Management command for updating entitlements modes. +""" + + +import logging +from textwrap import dedent + +from django.core.management import BaseCommand + +from entitlements.models import CourseEntitlement + +logger = logging.getLogger(__name__) # pylint: disable=invalid-name + + +class Command(BaseCommand): + """ + Management command for updating entitlements mode. + + Example usage: + + # Change entitlement_mode for given order_number with course_uuid to new_mode: + $ ./manage.py lms --settings=devstack_docker update_entitlement_mode \ + ORDER_NUMBER_123,ORDER_NUMBER_456 1234567-0000-1111-2222-123456789012 professional + """ + help = dedent(__doc__).strip() + + def add_arguments(self, parser): + parser.add_argument( + 'order_numbers', + help='Order number of entitlement' + ) + + parser.add_argument( + 'course_uuid', + help='UUID of course' + ) + + parser.add_argument( + 'entitlement_mode', + help='Entitlement mode to change to.' + ) + + def handle(self, *args, **options): + logger.info('Updating entitlement_mode for provided Entitlements.') + + order_numbers = options['order_numbers'] + course_uuid = options['course_uuid'] + entitlement_mode = options['entitlement_mode'] + + for order_number in order_numbers.split(','): + try: + entitlement_to_update = CourseEntitlement.objects.get( + course_uuid=course_uuid, + order_number=order_number, + ) + entitlement_to_update.mode = entitlement_mode + entitlement_to_update.save() + logger.info('entitlement_mode updated to {} for ' + 'order_number {} for course with UUID {}'.format(entitlement_mode, order_number, + course_uuid)) + except CourseEntitlement.DoesNotExist: + logger.info('entitlement with order_number {} and course_uuid {} does not exists'.format( + order_number, course_uuid)) + + logger.info('Successfully updated entitlement_mode for Entitlements.')