Groups2009 code: BackendManager gets request object in __init__

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 

MoinMoin: Groups2009/2009-05-29 (last edited 2009-05-30 06:43:01 by DmitriiMiliaev)