예제 #1
0
    def test_DelUser(self):
        userDB = UserDB()
        uid = userDB.add("jontest", "pass", "Jon Q. Testuser").id

        userDB.delete(uid)
        testUser = userDB.find_user_by_id(uid)
        self.assertTrue(testUser == None)
예제 #2
0
def list_users():
    """
    Renders the list users page
    """
    page_num = int(request.args.get("page", 0))
    per_page = mainApp.config["NUM_ENTRIES_PER_PAGE"][0]
    user_db = UserDB()
    role_db = RoleDB()

    if current_user.is_authenticated() and current_user.is_active():
        is_admin = user_db.in_group(current_user, mainApp.config["ADMIN_GROUP"])
        all_activities = set()
        for m in role_db.get_roles(current_user):
            acts = role_db.get_activities(m.role_id)
            for act in acts:
                if acts[act]:
                    all_activities.add(act)

        can_edit_users = "edit_user" in all_activities

        if is_admin or "view_users" in all_activities:
            if request.method == "POST":
                if "new" in request.form:
                    return redirect(url_for("admin_user.new_user"))
                elif "delete" in request.form:
                    uids = request.form.getlist("select")
                    for uid in uids:
                        try:
                            user_db.delete(int(uid))
                            flash(_('User with ID "{0}" deleted.'.format(uid)))
                        except UserNotFound:
                            flash(_('"{0}" user id not found!'.format(uid)), "error")
                elif "update" in request.form:
                    uids = {int(i): True for i in request.form.getlist("active")}
                    if len(uids) > 0:
                        users = user_db.get_all_users()
                        for u in users:
                            if u.id in uids:
                                u.active = True
                            else:
                                u.active = False
                            user_db.update_user(u)
                # import ipdb; ipdb.set_trace()
            users = user_db.get_all_users()
            total_pages = 0
            if len(users) > per_page:
                total_pages = int(ceil(float(len(users)) / float(per_page)))

            return render_template(
                "list_users.html",
                users=users,
                state=get_state(),
                page_num=page_num,
                total_pages=total_pages,
                can_edit_users=can_edit_users,
                is_admin=is_admin,
                title=_("Users"),
                delete_button=_("Delete"),
                update_button=_("Update"),
                new_button=_("New User"),
                del_title=_("Delete User(s)"),
                cancel_button=_("Cancel"),
                del_warn=_("Deleting users is a permanent action. " "Are you sure?"),
            )
        else:
            return _not_auth()
    else:
        return _not_auth()