From 3bedce47fd6ebc6331184c615a94fd8827950ecc Mon Sep 17 00:00:00 2001 From: Sunil Mohan Adapa Date: Sat, 9 Mar 2019 22:53:53 -0800 Subject: [PATCH] module_loader: Specially load modules in development mode Instead of the need to run './setup install' to install the module-enabled files into /etc/plinth/modules-enabled, pickup module configuration from app/data directories in development mode. Signed-off-by: Sunil Mohan Adapa Reviewed-by: James Valleroy --- plinth/module_loader.py | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/plinth/module_loader.py b/plinth/module_loader.py index dd28eccdc..ff4b95c30 100644 --- a/plinth/module_loader.py +++ b/plinth/module_loader.py @@ -23,6 +23,7 @@ import django import importlib import logging import os +import pathlib import re from plinth import cfg @@ -150,17 +151,23 @@ def get_modules_to_load(): if _modules_to_load is not None: return _modules_to_load - modules = [] - module_directory = os.path.join(cfg.config_dir, 'modules-enabled') + directory = pathlib.Path(cfg.config_dir) / 'modules-enabled' + files = list(directory.glob('*')) + if not files: + # './setup.py install' has not been executed yet. Pickup files to load + # from local module directories. + directory = pathlib.Path(__file__).parent + files = list(directory.glob('modules/*/data/etc/plinth/modules-enabled/*')) # Omit hidden files - file_names = [file_name - for file_name in os.listdir(module_directory) - if not file_name.startswith('.') and '.dpkg' not in file_name] + files = [ + file_ for file_ in files + if not file_.name.startswith('.') and '.dpkg' not in file_.name + ] - for file_name in file_names: - full_file_name = os.path.join(module_directory, file_name) - with open(full_file_name, 'r') as file_handle: + modules = [] + for file_ in files: + with file_.open() as file_handle: for line in file_handle: line = re.sub('#.*', '', line) line = line.strip()