from django.conf import settings
from ldap3 import Server, ServerPool, Connection, ObjectDef, AttrDef, Reader, Writer

server = Server(settings.AUTH_LDAP_SERVER_URI)



def create_user(user, password, firstname, lastname, email):
    conn = Connection(server, settings.AUTH_LDAP_BIND_DN,
                      settings.AUTH_LDAP_BIND_PASSWORD)
    if not conn.bind():
        raise Exception('Could not connect to LDAP Server')
    obj_new_user = ObjectDef(
        ['inetOrgPerson'], conn)
    w = Writer(conn, obj_new_user)
    dn = 'uid=%s,ou=users,dc=example,dc=com' % user
    w.new(dn)
    w[0].givenName = firstname
    w[0].sn = lastname
    w[0].cn = firstname + " " + lastname
    w[0].mail = email
    w[0].userPassword = password

    if not w.commit():
        conn.unbind()
        raise Exception("Couldn't write user")
    conn.unbind()
    return True