示例#1
0
    def handle(self, *args, **options):
        self.ldap = LdapController()
        self.ldap.connect(LDAP_HOSTNAME, LDAP_PORT, LDAP_BASE_SEARCH,
                          LDAP_PROTOCOL)
        ldap_groups = list(
            itertools.chain.from_iterable(
                [group['cn'] for group in self.ldap.get_groups_all()]))

        groups_to_create = RtGroup.objects.find_groups_not_listed(ldap_groups)
        if groups_to_create:
            for group in groups_to_create:
                RtGroup.objects.create(name=group, type=USER_DEFINED)

        tmp_set_for_unique_usernames = set()
        for ldap_groupname in args:
            tmp_set_for_unique_usernames.update(
                self.ldap.get_groups_member(ldap_groupname))
        ldap_username_list = list(tmp_set_for_unique_usernames)

        rt_users = RtUser.objects.filter(name__in=ldap_username_list)
        for user in rt_users:
            user_groups = self._get_groups_from_ldap_user(user)

            for group in RtGroupMember.objects.extra_ldap_groups(
                    user, user_groups):
                RtGroupMember.objects.create(
                    group=RtGroup.objects.get(name=group), member=user)
            RtGroupMember.objects.filter(
                group__in=RtGroupMember.objects.extra_rt_groups(
                    user, user_groups),
                member=user).delete()
示例#2
0
 def setUp(self):
     mock_ldap = mock.MagicMock(simpleldap)
     self.module = LdapController(mock_ldap)