69 lines
2.6 KiB
Python
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",
|
|
),
|
|
)
|