]> git.openstreetmap.org Git - osqa.git/commitdiff
Fixes bug in openid auth consumer, and problem with modules template loader.
authorhernani <hernani@0cfe37f9-358a-4d5e-be75-b63607b5c754>
Mon, 14 Mar 2011 18:09:41 +0000 (18:09 +0000)
committerhernani <hernani@0cfe37f9-358a-4d5e-be75-b63607b5c754>
Mon, 14 Mar 2011 18:09:41 +0000 (18:09 +0000)
git-svn-id: http://svn.osqa.net/svnroot/osqa/trunk@836 0cfe37f9-358a-4d5e-be75-b63607b5c754

forum/modules/__init__.py
forum/modules/template_loader.py
forum_modules/openidauth/consumer.py

index 976d9eb448a05fd2b2fa78e741ee9e4c59ae8993..f8e0fd1ffb4d70de623d502db114c03984f51f1b 100644 (file)
@@ -2,23 +2,29 @@ import os
 import types
 import logging
 
+from forum.utils.mixed import Proxy
+
 MODULES_PACKAGE = 'forum_modules'
 
-MODULES_FOLDER = None
 MODULE_LIST = []
 
 
 def init_modules_engine(site_src_root, disabled_modules):
-    MODULES_FOLDER = os.path.join(site_src_root, MODULES_PACKAGE)
+    modules_folder = os.path.join(site_src_root, MODULES_PACKAGE)
 
     MODULE_LIST.extend(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
+            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
     ]))
 
+    get_modules_folder.value = modules_folder
+
+def get_modules_folder():
+    return get_modules_folder.value
+
 def get_modules_script(script_name):
     all = []
 
index 61cb44e1d6f348fc39945c3991f5d2e9e7df7bd7..d0e57ac7aa141daa10ce4b68544928b39d5f92ac 100644 (file)
@@ -22,7 +22,7 @@ class ModulesTemplateLoader(BaseTemplateLoader):
 
         if name.startswith(MODULES_TEMPLATE_PREFIX):
             match = self.modules_re.search(name)
-            file_name = os.path.join(modules.MODULES_FOLDER, match.group(1), MODULES_TEMPLATE_FOLDER, match.group(2))
+            file_name = os.path.join(modules.get_modules_folder(), match.group(1), MODULES_TEMPLATE_FOLDER, match.group(2))
 
             if os.path.exists(file_name):
                 template = Template(file_name)
index 4c3818cbc41c47c6fa43e2cfe6b20dcc551a003f..9b5d6e712ec06b055d3d0ecf20afb362027f9324 100644 (file)
@@ -18,7 +18,7 @@ from store import OsqaOpenIDStore
 class OpenIdAbstractAuthConsumer(AuthenticationConsumer):
 
     dataype2ax_schema = {
-        #'username': 'http://axschema.org/namePerson/friendly',
+        'username': 'http://axschema.org/namePerson/friendly',
         'email': 'http://axschema.org/contact/email',
         #'web': 'http://axschema.org/contact/web/default',
         #'firstname': 'http://axschema.org/namePerson/first',
@@ -112,30 +112,32 @@ class OpenIdAbstractAuthConsumer(AuthenticationConsumer):
             if sreg_attrs:
                 sreg_response = SRegResponse.fromSuccessResponse(openid_response)
 
-                all_attrs = {}
-                [all_attrs.update(d) for k,d in sreg_attrs.items() if k != "policy_url"]
+                if sreg_response:
+                    all_attrs = {}
+                    [all_attrs.update(d) for k,d in sreg_attrs.items() if k != "policy_url"]
 
-                for attr_name, local_name in all_attrs.items():
-                    if attr_name in sreg_response:
-                        consumer_data[local_name] = sreg_response[attr_name]
+                    for attr_name, local_name in all_attrs.items():
+                        if attr_name in sreg_response:
+                            consumer_data[local_name] = sreg_response[attr_name]
 
             ax_schema = getattr(self, 'dataype2ax_schema', False)
 
             if ax_schema:
                 ax = AXFetchResponse.fromSuccessResponse(openid_response)
 
-                axargs = ax.getExtensionArgs()
+                if ax:
+                    axargs = ax.getExtensionArgs()
 
-                ax_schema2data_type = dict([(s, t) for t, s in ax_schema.items()])
+                    ax_schema2data_type = dict([(s, t) for t, s in ax_schema.items()])
 
-                available_types = dict([
-                    (ax_schema2data_type[s], re.sub('^type\.', '', n))
-                    for n, s in axargs.items() if s in ax_schema2data_type
-                ])
+                    available_types = dict([
+                        (ax_schema2data_type[s], re.sub('^type\.', '', n))
+                        for n, s in axargs.items() if s in ax_schema2data_type
+                    ])
 
-                for t, s in available_types.items():
-                    if not t in consumer_data:
-                        consumer_data[t] = axargs["value.%s.1" % s]
+                    for t, s in available_types.items():
+                        if not t in consumer_data:
+                            consumer_data[t] = axargs["value.%s.1" % s]
                     
             request.session['auth_consumer_data'] = consumer_data