Beispiel #1
0
def edit_user_form(request, pattern, cn):
    try:

        lists = dict()
        lists["pattern"] = pattern
        lists["action"] = reverse(
            "ldap.user.edit", kwargs={"pattern": pattern, "cn": cn})
        lists["edit"] = True

        ldap = Ldap(AuthSession(request.session).get_user().get_username())

        group_list = get_groups(ldap)
        policy_list = get_policies(ldap)

        if pattern == PATTERN_TYPES.INTERNAL:
            groupPattern = ldap.groupStandard
            usertype_list = CHOICES_GROUP

        elif pattern == PATTERN_TYPES.EXTERNAL:
            groupPattern = ldap.groupStandardExternal
            usertype_list = None

        if request.method == "POST":

            form = UserForm(group_list, policy_list, usertype_list, request.POST, initial={
                            'groupPattern': groupPattern})

            if form.is_valid():

                data = form.cleaned_data

                for e in data.keys():
                    if type(data[e]) == unicode or type(data[e]) == int:
                        data[e] = str(data[e])

                if valid_form_user(ldap, request, data['cn'], data['uidNumber'], data['employeeNumber'], data['mail'], edit=True):

                    ldap.edit_user(data['cn'], data['uidNumber'], data['groupPattern'], data['homeDirectory'], data['givenName'], data['initials'], data['sn'], data['mail'], data['homePhone'], data['mobile'], data['street'], data[
                                   'description'], data['employeeNumber'], data['employeeType'], data['loginShell'], data['shadowLastChange'], data['shadowMin'], data['shadowMax'], data['shadowWarning'], data['policy'], data['groups'])

                    client_user = AuthSession(
                        request.session).get_clientFactory().create_usuario()

                    try:
                        local_user = client_user.get_by_user_ldap(data['cn'])
                        local_user = local_user['usuario']
                        name = data['givenName'] + ' ' + \
                            data['initials'] + ' ' + data['sn']
                        client_user.alterar(local_user['id'], local_user['user'], local_user[
                                            'pwd'], name, local_user['ativo'], data['mail'], local_user['user_ldap'])
                    except UsuarioNaoExisteError:
                        pass

                    messages.add_message(
                        request, messages.SUCCESS, ldap_messages.get("success_edit_user"))
                    return HttpResponseRedirect(reverse('ldap.user.list', args=[pattern]))

        else:

            user = ldap.get_user(cn)
            user['groups'] = ldap.get_groups_user(cn)
            user['groupPattern'] = groupPattern

            form = UserForm(
                group_list, policy_list, usertype_list, initial=user)

    except LDAPNotFoundError, e:
        messages.add_message(
            request, messages.ERROR, ldap_messages.get("invalid_user") % cn)
        return HttpResponseRedirect(reverse('ldap.user.list', args=[pattern]))
Beispiel #2
0
def delete_user_all(request, pattern):

    if request.method == 'POST':

        ldap = Ldap(AuthSession(request.session).get_user().get_username())
        form = DeleteForm(request.POST)

        if form.is_valid():

            # All cns to be deleted
            cns = split_to_array(form.cleaned_data['ids'])

            # All messages to display
            error_list = list()

            # Control others exceptions
            have_errors = False

            # For each user selected to remove
            for cn in cns:

                try:

                    ldap.rem_user(cn)

                    client_user = AuthSession(
                        request.session).get_clientFactory().create_usuario()

                    try:
                        local_user = client_user.get_by_user_ldap(cn)
                        local_user = local_user['usuario']
                        client_user.alterar(local_user['id'], local_user['user'], local_user[
                                            'pwd'], local_user['nome'], local_user['ativo'], local_user['email'], None)
                    except UsuarioNaoExisteError:
                        pass

                except LDAPMethodError, e:
                    error_list.append(cn)
                    have_errors = True

                except LDAPError, e:
                    logger.error(e)
                    messages.add_message(request, messages.ERROR, e)
                    have_errors = True
                    break

            # If cant remove nothing
            if len(error_list) == len(cns):
                messages.add_message(
                    request, messages.ERROR, error_messages.get("can_not_remove_all"))

            # If cant remove someones
            elif len(error_list) > 0:
                msg = ""
                for id_error in error_list:
                    msg = msg + id_error + ", "

                msg = error_messages.get("can_not_remove") % msg[:-2]

                messages.add_message(request, messages.WARNING, msg)

            # If all has ben removed
            elif have_errors == False:
                messages.add_message(
                    request, messages.SUCCESS, ldap_messages.get("success_remove_user"))

            else:
                messages.add_message(
                    request, messages.SUCCESS, error_messages.get("can_not_remove_error"))