Groups2009 code: BackendManager gets request object in __init__
BackendManager gets request object in init http://hg.moinmo.in/moin/1.9-groups-dmilajevs/rev/c3e904a9c00b
pep8. MoinMoin.groups _test renamed to _tests http://hg.moinmo.in/moin/1.9-groups-dmilajevs/rev/8dcf18d0ae41
Groups2009 code started: wiki_pages backend refactoring
This draft change of moving GroupDict to the wiki_pages backend
1 # HG changeset patch
2 # User Dmitrijs Milajevs <dimazest@gmail.com>
3 # Date 1243664529 -7200
4 # Node ID c3e904a9c00bd4f31a14cba78267671b2fdc5e3e
5 # Parent 8dcf18d0ae41c66774c6fe1791b794902af7d02d
6 Groups 2009: BackendManager gets request object in __init__
7
8 --- a/MoinMoin/_tests/wikiconfig.py
9 +++ b/MoinMoin/_tests/wikiconfig.py
10 @@ -25,7 +25,7 @@
11 data_dir = os.path.join(_base_dir, "data")
12 data_underlay_dir = os.path.join(_base_dir, "underlay")
13
14 - group_manager = GroupManager([])
15 + group_manager = lambda self, request: GroupManager([])
16
17 #show_hosts = 1
18
19 @@ -33,4 +33,3 @@
20
21 # used to check if it is really a wiki we may modify
22 is_test_wiki = True
23 -
24 --- a/MoinMoin/groups/__init__.py
25 +++ b/MoinMoin/groups/__init__.py
26 @@ -16,12 +16,14 @@
27 group name. It provides access to groups of specific backend.
28 """
29
30 - def __init__(self, backend, mapper_to_backend=lambda x: x, mapper_from_backend=lambda x: x):
31 + def __init__(self, request, backend, mapper_to_backend=lambda x: x, mapper_from_backend=lambda x: x):
32 """
33 Creates backend manager object.
34
35 XXX Decorators can be used for group name mapping.
36
37 + @param request: request object.
38 +
39 @type backend: group backend object.
40 @param backend: the backend which provides access to the group
41 definitions.
42 --- a/MoinMoin/groups/_tests/test_backend_manager.py
43 +++ b/MoinMoin/groups/_tests/test_backend_manager.py
44 @@ -26,7 +26,8 @@
45 u'EditorGroup': self.editor_group,
46 u'FruitGroup': self.fruit_group}
47
48 - self.group_backend = BackendManager(backend=groups)
49 + self.group_backend = BackendManager(request=self.request,
50 + backend=groups)
51
52 def test_getitem(self):
53 """
54 @@ -91,11 +92,11 @@
55 # Add "Group" postfix for every group name received from a backend
56 mapper_from_backend = lambda group_name: "%sGroup" % group_name
57
58 - self.group_backend = BackendManager(backend=groups,
59 + self.group_backend = BackendManager(request=self.request,
60 + backend=groups,
61 mapper_to_backend=mapper_to_backend,
62 mapper_from_backend=mapper_from_backend)
63
64 -
65 def test_getitem(self):
66 admin_group = self.group_backend[u'AdminGroup']
67 assert self.admin_group == admin_group
68 --- a/MoinMoin/groups/_tests/test_group_manager.py
69 +++ b/MoinMoin/groups/_tests/test_group_manager.py
70 @@ -4,6 +4,7 @@
71 MoinMoin.groups.GroupManager test
72
73 @copyright: 2009 MoinMoin:DmitrijsMilajevs
74 + 2008 MoinMoin: MelitaMihaljevic
75 @license: GPL, see COPYING for details
76 """
77
78 @@ -11,20 +12,23 @@
79
80 from MoinMoin.groups import BackendManager, GroupManager
81
82 -
83 class TestGroupManagerAPI(object):
84 """
85 Performs test of the API of GroupManager.
86 """
87
88 - def setup_method(self, method):
89 + from MoinMoin._tests import wikiconfig
90 + class Config(wikiconfig.Config):
91 + pass
92 +
93 + def setup_class(self):
94 self.admin_group = frozenset([u'Admin', u'JohnDoe'])
95 self.editor_group = frozenset([u'MainEditor', u'JohnDoe'])
96 self.fruit_group = frozenset([u'Apple', u'Banana', u'Cherry'])
97
98 - first_backend = BackendManager({u'AdminGroup': self.admin_group,
99 - u'EditorGroup': self.editor_group,
100 - u'FruitGroup': self.fruit_group})
101 + first_backend_groups = {u'AdminGroup': self.admin_group,
102 + u'EditorGroup': self.editor_group,
103 + u'FruitGroup': self.fruit_group}
104
105 self.user_group = frozenset([u'JohnDoe', u'Bob', u'Joe'])
106 self.city_group = frozenset([u'Bolzano', u'Riga', u'London'])
107 @@ -32,15 +36,18 @@
108 # and added himself to AdminGroup
109 self.second_admin_group = frozenset([u'TheHacker'])
110
111 - second_backend = BackendManager({u'UserGroup': self.user_group,
112 - u'CityGroup': self.city_group,
113 - # Here group name clash occurs.
114 - # AdminGroup is defined in both
115 - # first_backend and second_backend.
116 - u'AdminGroup': self.second_admin_group})
117 + second_backend_groups = {u'UserGroup': self.user_group,
118 + u'CityGroup': self.city_group,
119 + # Here group name clash occurs.
120 + # AdminGroup is defined in both
121 + # first_backend and second_backend.
122 + u'AdminGroup': self.second_admin_group}
123
124 - self.group_manager = GroupManager(backends = [first_backend,
125 - second_backend])
126 + self.Config.group_manager = lambda self, request: GroupManager(backends=[BackendManager(request, first_backend_groups),
127 + BackendManager(request, second_backend_groups)])
128 +
129 + def setup_method(self, method):
130 + self.group_manager = self.request.cfg.group_manager(self.request)
131
132 def test_getitem(self):
133 """
134 --- a/MoinMoin/groups/_tests/test_group_manager_acl.py
135 +++ b/MoinMoin/groups/_tests/test_group_manager_acl.py
136 @@ -23,9 +23,11 @@
137 def setup_class(self):
138 groups = {u'FirstGroup': frozenset([u"ExampleUser", u"SecondUser", u"JoeDoe"]),
139 u'SecondGroup': frozenset([u"ExampleUser", u"ThirdUser"])}
140 - group_manager = GroupManager([BackendManager(groups)])
141
142 - self.Config.group_manager = group_manager
143 + self.Config.group_manager = lambda self, request: GroupManager(backends=[BackendManager(request=request, backend=groups)])
144 +
145 + def setup_method(self, method):
146 + self.group_manager = self.request.cfg.group_manager(self.request)
147
148 def testConfigBackendAcl(self):
149 """
150 @@ -54,7 +56,8 @@
151 }
152
153 # create config group manager backend object
154 - group_manager_backend = GroupManager(BackendManager([groups]))
155 + group_manager_backend = GroupManager(BackendManager(request=self.request,
156 + backend=[groups]))
157
158 # check that a group named 'A' is available via the config backend
159 assert 'A' in group_manager_backend
160 --- a/MoinMoin/security/__init__.py
161 +++ b/MoinMoin/security/__init__.py
162 @@ -308,7 +308,7 @@
163 else: # we have a #acl on the page (self.acl can be [] if #acl is empty!)
164 acl = self.acl
165
166 - group_manager = request.cfg.group_manager
167 + group_manager = request.cfg.group_manager(request)
168
169 allowed = None
170 for entry, rightsdict in acl:
171 @@ -452,4 +452,3 @@
172 pi, dummy = wikiutil.get_processing_instructions(text)
173 acl_lines = [args for verb, args in pi if verb == 'acl']
174 return AccessControlList(request.cfg, acl_lines)
175 -
176