Source code for pyad.adcontainer

from adobject import *
from aduser import ADUser
from adcomputer import ADComputer
from adgroup import ADGroup
import pyadconstants

[docs]class ADContainer(ADObject): def get_children_iter(self, recursive=False, filter_=None): for com_object in self._ldap_adsi_obj: q = ADObject.from_com_object(com_object) q.adjust_pyad_type() if q.type == 'organizationalUnit' and recursive: for c in q.get_children_iter(recursive=recursive): if not filter_ or c.__class__ in filter_: yield c if not filter_ or q.__class__ in filter_: yield q
[docs] def get_children(self, recursive=False, filter_=None): return list(self.get_children_iter(recursive=recursive, filter_=filter_))
def __create_object(self, type_, name): prefix = 'ou' if type_ == 'organizationalUnit' else 'cn' prefixed_name = '='.join((prefix,name)) return self._ldap_adsi_obj.Create(type_, prefixed_name)
[docs] def create_user(self, name, password=None, upn_suffix=None, enable=True,optional_attributes={}): try: if not upn_suffix: upn_suffix = self.get_domain().get_default_upn() upn = '@'.join((name, upn_suffix)) obj = self.__create_object('user', name) obj.Put('sAMAccountName', name) obj.Put('userPrincipalName', upn) obj.SetInfo() pyadobj = ADUser.from_com_object(obj) if enable: pyadobj.enable() if password: pyadobj.set_password(password) pyadobj.update_attributes(optional_attributes) return pyadobj except pywintypes.com_error, e: pyadutils.pass_up_com_exception(e)
[docs] def create_group(self, name, security_enabled=True, scope='GLOBAL', optional_attributes={}): try: obj = self.__create_object('group', name) obj.Put('sAMAccountName',name) val = pyadconstants.ADS_GROUP_TYPE[scope] if security_enabled: val = val | pyadconstants.ADS_GROUP_TYPE['SECURITY_ENABLED'] obj.Put('groupType',val) obj.SetInfo() pyadobj = ADGroup.from_com_object(obj) pyadobj.update_attributes(optional_attributes) return pyadobj except pywintypes.com_error, e: pyadutils.pass_up_com_exception(e)
[docs] def create_container(self, name, optional_attributes={}): try: obj = self.__create_object('organizationalUnit', name) obj.SetInfo() pyadobj = ADContainer.from_com_object(obj) pyadobj.update_attributes(optional_attributes) return pyadobj except pywintypes.com_error, e: pyadutils.pass_up_com_exception(e)
[docs] def create_computer(self, name, enable=True,optional_attributes={}): try: obj = self.__create_object('computer', name) obj.Put('sAMAccountName', name) obj.SetInfo() pyadobj = ADComputer.from_com_object(obj) if enable: pyadobj.enable() pyadobj.update_attributes(optional_attributes) return pyadobj except pywintypes.com_error, e: pyadutils.pass_up_com_exception(e)
[docs] def remove_child(self, child): self._ldap_adsi_obj.Delete(child.type, child.prefixed_cn)
ADObject._py_ad_object_mappings['organizationalUnit'] = ADContainer