Files
django-dav-events/dav_base/management/commands/enable_module.py

38 lines
1.4 KiB
Python

import os
import pkg_resources
from django.conf import settings
from django.core.management.base import BaseCommand, CommandError
from dav_base.config.modules import DJANGO_MAIN_MODULE, ModuleMeta
class Command(BaseCommand):
help = 'Enable a modular app in django-dav installation.'
def add_arguments(self, parser):
parser.add_argument('module', help='the name of the module')
def handle(self, *args, **options):
django_base_dir = settings.BASE_DIR
django_main_module = DJANGO_MAIN_MODULE
module_name = options['module']
config = settings.MODULE_CONFIG
if module_name in config.modules.keys():
raise CommandError('Module \'{}\' is already enabled'.format(module_name))
settings_file_name = 'settings-{}.py'.format(module_name)
input_file = os.path.join('django_project_config', settings_file_name)
if pkg_resources.resource_exists(module_name, input_file):
output_file = os.path.join(django_base_dir, django_main_module, settings_file_name)
if not os.path.exists(output_file):
with open(output_file, 'wb') as f:
f.write(pkg_resources.resource_string(module_name, input_file))
module_meta_obj = ModuleMeta(module_name)
config.modules[module_name] = module_meta_obj
config.save()
self.stdout.write(self.style.SUCCESS('Module \'{}\' enabled.'.format(module_name)))