Ejemplo n.º 1
0
 def __init__(self,
              context,
              parent=None,
              groupid=u'',
              title=u'',
              description=u'',
              namespace=u'',
              roles=(),
              members=None,
              **kwargs):
     if not IWorkspaceContext.providedBy(context):
         raise ValueError('Could not adapt: context not a workspace')
     schema = interfaces.IWorkspaceGroup
     if schema.providedBy(parent):
         self.__parent__ = parent
     self.context = context
     self.adapts_project = IProjectContext.providedBy(context)
     valid_setattr(self, schema['baseid'], _decode(groupid))
     valid_setattr(self, schema['title'], _decode(title))
     valid_setattr(self, schema['description'], _decode(description))
     valid_setattr(self, schema['namespace'], _decode(namespace))
     self.portal = getSite()
     self.site_members = members or interfaces.ISiteMembers(self.portal)
     groups = Groups(self.portal)
     groupname = self.pas_group()[0]
     if groupname not in groups:
         groups.add(groupname)  # edge-case: may cause write-on-read
     self._group = GroupInfo(groupname, members=self.site_members)
 def test_get_user(self):
     """Get user from roster"""
     username = self.some_user
     workspace, roster = self._base_fixtures()
     assert username in roster  # was added by fixture
     group = GroupInfo(roster.groups['viewers'].pas_group()[0])
     assert username in group
     # equal propertied user objects:
     self.assertEqual(group.get(username)._id, roster.get(username)._id)
     self.assertEqual(
         group.get(username)._login,
         roster.get(username)._login)
 def test_user_add_and_containment(self):
     """
     Test user addition, containment matches containment in associated group
     """
     workspace, roster = self._base_fixtures()
     # add a user to the roster, then to the 'managers' group;
     # test containment/success of both in roster, workgroup, and PAS
     # group.
     username = '******'
     self.site_members.register(username, send=False)
     original_membercount = len(roster)
     roster.add(username)
     roster.groups['managers'].add(username)
     assert username in roster
     assert username in roster.groups['managers']
     # get PAS group, via IGroup:
     pas_group = GroupInfo(roster.groups['managers'].pas_group()[0])
     assert username in pas_group
     self.assertEqual(len(roster), original_membercount + 1)