]> git.openstreetmap.org Git - osqa.git/blobdiff - forum/modules/__init__.py
Make sure to clean the original state on all objects recently fetched.
[osqa.git] / forum / modules / __init__.py
index 60f21655166cf5331b219be92cf4f79d02d0414e..f1ad7d96bb167a936ea87756b8dfb695a7384cf4 100644 (file)
@@ -1,40 +1,34 @@
-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:
-            #repr(type(e)) + m.__name__ + ":" + str(e)
+            #print repr(type(e)) + m.__name__ + ":" + str(e)
             pass
         except:
-            #import sys, traceback
-            #traceback.print_exc(file=sys.stdout)
+            import traceback
+            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 = {}
 
@@ -84,23 +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, ReturnImediatelyException