]> git.openstreetmap.org Git - osqa.git/blob - forum/authentication/__init__.py
8dbf825a525c2ab49c17a38834961ac6135706ce
[osqa.git] / forum / authentication / __init__.py
1 import re
2 import django.dispatch
3 from forum.modules import get_modules_script_classes
4 from forum.authentication.base import AuthenticationConsumer, ConsumerTemplateContext
5
6 class ConsumerAndContext:
7     def __init__(self, id, consumer, context):
8         self.id = id
9         self._consumer = consumer
10
11         context.id = id
12         self.context = context
13
14     @property
15     def consumer(self):
16         return self._consumer()
17
18 consumers = dict([
19             (re.sub('AuthConsumer$', '', name).lower(), cls) for name, cls
20             in get_modules_script_classes('authentication', AuthenticationConsumer).items()
21             if not re.search('AbstractAuthConsumer$', name)
22         ])
23
24 contexts = dict([
25             (re.sub('AuthContext$', '', name).lower(), cls) for name, cls
26             in get_modules_script_classes('authentication', ConsumerTemplateContext).items()
27         ])
28
29 AUTH_PROVIDERS = dict([
30             (name, ConsumerAndContext(name, consumers[name], contexts[name])) for name in consumers.keys()
31             if name in contexts
32         ])
33