def from_csv(cls, user, data, log): """ Import data from CSV file into user.groups """ if 'group' in data and data['group']: try: group = Group.by_name(data['group']) except InvalidRequestError: group = Group(group_name=data['group'], display_name=data['group']) session.add(group) deleted = False if 'deleted' in data: deleted = smart_bool(data['deleted']) if deleted: if group in user.groups: group.remove_member(user, service=u'CSV', agent=identity.current.user) else: if group not in user.groups: group.add_member(user, service=u'CSV', agent=identity.current.user) else: log.append("%s: group can't be empty!" % user) return False return True
def from_csv(cls,user,data,log): """ Import data from CSV file into user.groups """ if 'group' in data and data['group']: try: group = Group.by_name(data['group']) except InvalidRequestError: group = Group(group_name=data['group'], display_name=data['group']) session.add(group) deleted = False if 'deleted' in data: deleted = smart_bool(data['deleted']) if deleted: if group in user.groups: group.remove_member(user, service=u'CSV', agent=identity.current.user) else: if group not in user.groups: group.add_member(user, service=u'CSV', agent=identity.current.user) else: log.append("%s: group can't be empty!" % user) return False return True
def create(self, kw): """ Creates a new group. The *kw* argument must be an XML-RPC structure (dict) specifying the following keys: 'group_name' Group name (maximum 16 characters) 'display_name' Group display name 'description' Group description 'ldap' Populate users from LDAP (True/False) Returns a message whether the group was successfully created or raises an exception on failure. """ display_name = kw.get('display_name') group_name = kw.get('group_name') description = kw.get('description') ldap = kw.get('ldap') password = kw.get('root_password') if ldap and not identity.current.user.is_admin(): raise BX(_(u'Only admins can create LDAP groups')) if ldap and not config.get("identity.ldap.enabled", False): raise BX(_(u'LDAP is not enabled')) try: group = Group.by_name(group_name) except NoResultFound: group = Group() session.add(group) group.record_activity(user=identity.current.user, service=u'XMLRPC', field=u'Group', action=u'Created') group.display_name = display_name group.group_name = group_name group.description = description group.root_password = password if ldap: group.membership_type = GroupMembershipType.ldap group.refresh_ldap_members() else: group.add_member(identity.current.user, is_owner=True, service=u'XMLRPC', agent=identity.current.user) return 'Group created: %s.' % group_name else: raise BX(_(u'Group already exists: %s.' % group_name))
def create(self, kw): """ Creates a new group. The *kw* argument must be an XML-RPC structure (dict) specifying the following keys: 'group_name' Group name (maximum 16 characters) 'display_name' Group display name 'description' Group description 'ldap' Populate users from LDAP (True/False) Returns a message whether the group was successfully created or raises an exception on failure. """ display_name = kw.get('display_name') group_name = kw.get('group_name') description = kw.get('description') ldap = kw.get('ldap') password = kw.get('root_password') if ldap and not identity.current.user.is_admin(): raise BX(_(u'Only admins can create LDAP groups')) try: group = Group.by_name(group_name) except NoResultFound: group = Group() session.add(group) group.record_activity(user=identity.current.user, service=u'XMLRPC', field=u'Group', action=u'Created') group.display_name = display_name group.group_name = group_name group.description = description group.root_password = password if ldap: group.membership_type = GroupMembershipType.ldap group.refresh_ldap_members() else: group.add_member(identity.current.user, is_owner=True, service=u'XMLRPC', agent=identity.current.user) return 'Group created: %s.' % group_name else: raise BX(_(u'Group already exists: %s.' % group_name))
def test_refresh_ldap_group_membership(self): with session.begin(): group = Group(group_name=u'alp', display_name=u'Australian Labor Party', membership_type=GroupMembershipType.ldap) old_member = data_setup.create_user(user_name=u'krudd') group.add_member(old_member) run_command('refresh_ldap.py', 'beaker-refresh-ldap') with session.begin(): session.expire_all() self.assertEquals(group.users, [User.by_user_name(u'jgillard')]) # second time is a no-op run_command('refresh_ldap.py', 'beaker-refresh-ldap') with session.begin(): session.expire_all() self.assertEquals(group.users, [User.by_user_name(u'jgillard')])
def test_refresh_ldap_group_membership(self): with session.begin(): group = Group(group_name=u'alp', display_name=u'Australian Labor Party', membership_type=GroupMembershipType.ldap) old_member = data_setup.create_user(user_name=u'krudd') group.add_member(old_member) from bkr.server.tools.refresh_ldap import refresh_ldap refresh_ldap() with session.begin(): session.expire_all() self.assertEquals(group.users, [User.by_user_name(u'jgillard')]) # second time is a no-op refresh_ldap() with session.begin(): session.expire_all() self.assertEquals(group.users, [User.by_user_name(u'jgillard')])