Solution: Implementation of AD functionality
Completion requirements
Ldap.py
A very simple solution is shown below:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
from abc import ABC, abstractmethod # import Abstract Base Classes (ABCs) class AbstractLDAP(ABC): # abstract class def __init__(self, dnStudents): self._dnStudents = dnStudents super().__init__() @abstractmethod # every abstract method has to be defined in subclass def createStudent(self, username, nameSchoolClass): pass @abstractmethod def deleteStudent(self, username, nameSchoolClass): pass @abstractmethod def createSchoolClass(self, nameSchoolClass): pass @abstractmethod def deleteSchoolClass(self, nmaeSchoolClass): pass from pyad import * # import installed pyad module class PyAD(AbstractLDAP): def createStudent(self, username, nameSchoolClass): ouSchoolClass = pyad.adcontainer.ADContainer("ou="+nameSchoolClass+", "+self._dnStudents, adsi_ldap_com_object=None, options={}) aduser.ADUser.create(username, ouSchoolClass, password=None, upn_suffix=None, enable=True, optional_attributes={}) def deleteStudent(self, username, nameSchoolClass): ouSchoolClass = pyad.adcontainer.ADContainer("ou="+nameSchoolClass+", "+self._dnStudents, adsi_ldap_com_object=None, options={}) ouSchoolClass.from_cn(username).delete() def createSchoolClass(self, nameSchoolClass): ouStudents = pyad.adcontainer.ADContainer(self._dnStudents, adsi_ldap_com_object=None, options={}) ouStudents.create_container(nameSchoolClass) def deleteSchoolClass(self, nameSchoolClass): ouSchoolClass = pyad.adcontainer.ADContainer("ou="+nameSchoolClass+", "+self._dnStudents, adsi_ldap_com_object=None, options={}) ouSchoolClass.delete() |
Be aware that until now
- only empty OUs can be deleted and
- creation of students with the same username is not possible.
testLdap.py
The above class PyAD is tested with:
1 2 3 4 5 6 7 8 9 10 11 |
from Ldap import PyAD # import class PyAD ldap = PyAD("ou=Students, ou=SchoolUsers, dc=trainingX, dc=net") ldap.createSchoolClass("school_class1") ldap.createStudent("student1", "school_class1") ldap.createStudent("student2", "school_class1") ldap.deleteStudent("student1", "school_class1") ldap.deleteStudent("student2", "school_class1") # ldap.deleteSchoolClass("school_class1") |
Last modified: Sunday, 16 April 2023, 11:48 AM