Files
edx-platform/lms/djangoapps/commerce/management/commands/configure_commerce.py
2019-12-30 12:25:38 -05:00

69 lines
2.6 KiB
Python

"""
Command for managing commerce configuration for lms.
We can use this command to enable/disable commerce configuration or disable checkout to E-Commerce service.
"""
import logging
from django.core.management import BaseCommand
from ...models import CommerceConfiguration
logger = logging.getLogger(__name__) # pylint: disable=invalid-name
class Command(BaseCommand):
"""
Command to enable or disable commerce configuration.
Positional Arguments:
This command does not take any positional argument.
Optional Arguments:
disable (bool): if True then disable configuration, enable otherwise
checkout_on_ecommerce (bool): Enable E-Commerce checkout if True, disable otherwise.
"""
help = 'Enable/Disable commerce configuration, including configuration of E-Commerce checkout.'
def add_arguments(self, parser):
parser.add_argument('--disable-checkout-on-ecommerce',
dest='checkout_on_ecommerce',
action='store_false',
default=True,
help='Do not checkout to E-Commerce even when configuration is enabled.')
parser.add_argument('--disable',
dest='disable',
action='store_true',
default=False,
help='Disable existing E-Commerce configuration.')
def handle(self, *args, **options):
"""
Create a new commerce configuration or update an existing one according to the command line arguments.
args:
This command does not take any positional argument.
options:
disable (bool): if True then disable configuration, enable otherwise
checkout_on_ecommerce (bool): Enable E-Commerce checkout if True, disable otherwise.
"""
disable = options.get('disable')
checkout_on_ecommerce = options.get('checkout_on_ecommerce')
# We are keeping id=1, because as of now, there are only one commerce configuration for the system.
CommerceConfiguration.objects.update_or_create(
id=1,
defaults={
'enabled': not disable,
'checkout_on_ecommerce_service': checkout_on_ecommerce,
}
)
logger.info(
'Commerce Configuration {configuration_status} with checkout on ecommerce {checkout_status}.'.format(
configuration_status="disabled" if disable else "enabled",
checkout_status="enabled" if checkout_on_ecommerce else "disabled",
),
)