-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathimportStudents.py
More file actions
50 lines (41 loc) · 1.88 KB
/
importStudents.py
File metadata and controls
50 lines (41 loc) · 1.88 KB
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
41
42
43
44
45
46
47
48
from School import * # import classes
from User import *
from Csv import Csv
from Ldap import PyAD
import sys
def deleteObsoleteSchoolClassesFromAD(school):
ldap = PyAD(Settings.dnStudents)
ldapClassNames = ldap.getSchoolClasses()
classNames = []
for schoolClass in school.getSchoolClasses():
classNames.append(schoolClass.getName())
for ldapClassName in ldapClassNames:
if ldapClassName not in classNames: # school class in ldap is obsolete
ldap.deleteSchoolClass(ldapClassName)
else:
deleteObsoleteStudentsFromAD(school, ldapClassName)
def deleteObsoleteStudentsFromAD(school, className):
ldap = PyAD(Settings.dnStudents)
ldapStudents = ldap.getStudents(className)
studentsNames = []
for schoolClass in school.getSchoolClasses():
if schoolClass.getName() == className:
students = schoolClass.getStudents()
for student in students:
studentsNames.append([student.getSurname(), student.getFirstname(), student.getDateOfBirth()])
for ldapStudent in ldapStudents:
if ldapStudent not in studentsNames:
ldap.deleteStudent(ldapStudent[0], ldapStudent[1], ldapStudent[2], className)
if __name__ == "__main__":
if(len(sys.argv)) == 1: # no command line argument
filename = input("CSV import file with students: ")
else: # filename as argument
filename = sys.argv[1]
school = School([])
print(filename + " is being imported ...")
importStudents = school.importStudentsFromCSV(filename) # import students
print("Delete obsolete school classes ...")
deleteObsoleteSchoolClassesFromAD(school)
print("Delete obsolete student accounts from the Active Directory and add new ones ...")
school.addToLDAP()
print("Done!")