X-Git-Url: https://git.openstreetmap.org./osqa.git/blobdiff_plain/274105ff6d8b9b77ecda6e8abde12a8af23f93c8..0bd53bfd0a08e9949651ec35bf22048db8e740d9:/forum/modules/__init__.py diff --git a/forum/modules/__init__.py b/forum/modules/__init__.py index 07cbc6e..f1ad7d9 100644 --- a/forum/modules/__init__.py +++ b/forum/modules/__init__.py @@ -1,29 +1,19 @@ -import os import types -import re import logging -from django.template import Template, TemplateDoesNotExist from django.conf import settings -MODULES_PACKAGE = 'forum_modules' - -MODULES_FOLDER = os.path.join(os.path.dirname(__file__), '../../' + MODULES_PACKAGE) - -DISABLED_MODULES = getattr(settings, 'DISABLED_MODULES', []) - -MODULE_LIST = filter(lambda m: getattr(m, 'CAN_USE', True), [ - __import__('forum_modules.%s' % f, globals(), locals(), ['forum_modules']) - for f in os.listdir(MODULES_FOLDER) - if os.path.isdir(os.path.join(MODULES_FOLDER, f)) and - os.path.exists(os.path.join(MODULES_FOLDER, "%s/__init__.py" % f)) and - not f in DISABLED_MODULES -]) +def get_modules_folder(): + return get_modules_folder.value def get_modules_script(script_name): all = [] - for m in MODULE_LIST: + for m in settings.MODULE_LIST: + if hasattr(m, script_name): + all.append(getattr(m, script_name)) + continue + try: all.append(__import__('%s.%s' % (m.__name__, script_name), globals(), locals(), [m.__name__])) except ImportError, e: @@ -31,13 +21,14 @@ def get_modules_script(script_name): pass except: import traceback - logging.error("Error importing %s from module %s: \n %s" % ( - script_name, m.__name__, traceback.format_exc() - )) + msg = "Error importing %s from module %s: \n %s" % ( + script_name, m, traceback.format_exc() + ) + logging.error(msg) return all -def get_modules_scipt_implementations(script_name, impl_class): +def get_modules_script_implementations(script_name, impl_class): scripts = get_modules_script(script_name) all_impls = {} @@ -87,25 +78,4 @@ def get_handler(name, default): all = get_all_handlers(name) return len(all) and all[0] or default -module_template_re = re.compile('^modules\/(\w+)\/(.*)$') - -def module_templates_loader(name, dirs=None): - result = module_template_re.search(name) - - if result is not None: - file_name = os.path.join(MODULES_FOLDER, result.group(1), 'templates', result.group(2)) - - if os.path.exists(file_name): - try: - f = open(file_name, 'r') - source = f.read() - f.close() - return (source, file_name) - except: - pass - - raise TemplateDoesNotExist, name - -module_templates_loader.is_usable = True - -from decorators import decorate +from decorators import decorate, ReturnImediatelyException