Exemple #1
0
def editUser_mask(req, id, err=0):
    ugroups = []
    usertype = req.params.get("usertype", "intern")
    newuser = 0

    if err == 0 and id == "":  # new user
        user = tree.Node("", type="user")
        user.setOption("c")
        newuser = 1

    elif err == 0 and id != "":  # edit user
        if usertype == "intern":
            user = getUser(id)
        else:
            user = getExternalUser(id)
    else:
        # error while filling values
        option = ""
        for key in req.params.keys():
            if key.startswith("option_"):
                option += key[7]

        for usergroup in req.params.get("usergroups", "").split(";"):
            ugroups += [usergroup]

        user = tree.Node("", type="user")
        user.setName(req.params.get("username", ""))
        user.setEmail(req.params.get("email", ""))
        user.setOption(option)
        user.setLastName(req.params.get("lastname", ""))
        user.setFirstName(req.params.get("firstname", ""))
        user.setTelephone(req.params.get("telephone", ""))
        user.setComment(req.params.get("comment", ""))
        user.setOrganisation(req.params.get("organisation", ""))

    v = getAdminStdVars(req)
    v["error"] = err
    v["user"] = user
    v["groups"] = loadGroupsFromDB()
    v["ugroups"] = ugroups
    v["useroption"] = useroption
    v["id"] = id
    v["usertype"] = usertype
    v["filtertype"] = req.params.get("filtertype", "")
    v["actpage"] = req.params.get("actpage")
    v["newuser"] = newuser
    v["usertypes"] = getExternalAuthentificators()
    return req.getTAL("web/admin/modules/user.html", v, macro="modify")
Exemple #2
0
def editUser_mask(req, id, err=0):
    ugroups = []
    usertype = req.params.get("usertype", "intern")
    newuser = 0

    if err == 0 and id == "":  # new user
        user = tree.Node("", type="user")
        user.setOption("c")
        newuser = 1

    elif err == 0 and id != "":  # edit user
        if usertype == "intern":
            user = getUser(id)
        else:
            user = getExternalUser(id)
    else:
        # error while filling values
        option = ""
        for key in req.params.keys():
            if key.startswith("option_"):
                option += key[7]

        for usergroup in req.params.get("usergroups", "").split(";"):
            ugroups += [usergroup]

        user = tree.Node("", type="user")
        user.setName(req.params.get("username", ""))
        user.setEmail(req.params.get("email", ""))
        user.setOption(option)
        user.setLastName(req.params.get("lastname", ""))
        user.setFirstName(req.params.get("firstname", ""))
        user.setTelephone(req.params.get("telephone", ""))
        user.setComment(req.params.get("comment", ""))
        user.setOrganisation(req.params.get("organisation", ""))

    v = getAdminStdVars(req)
    v["error"] = err
    v["user"] = user
    v["groups"] = loadGroupsFromDB()
    v["ugroups"] = ugroups
    v["useroption"] = useroption
    v["id"] = id
    v["usertype"] = usertype
    v["filtertype"] = req.params.get("filtertype", "")
    v["actpage"] = req.params.get("actpage")
    v["newuser"] = newuser
    v["usertypes"] = getExternalAuthentificators()
    return req.getTAL("web/admin/modules/user.html", v, macro="modify")
Exemple #3
0
def view(req):
    """show all users"""
    global users_cache

    users = []
    order = getSortCol(req)
    actfilter = getFilter(req)
    showdetails = 0
    searchterm_was = ""
    macro = "view"

    usertype = req.params.get("usertype", "")

    if "action" in req.params:
        macro = "details"

        if req.params.get("action") == "details":  # load all users of given type

            if 1:  # len(users_cache)<1: # load users in cache
                # always load users anew: cache-update for dynamic users seems
                # uneconomic: loading users seems to run fast
                users = list(loadUsersFromDB())
                for _usertype in list(getExternalUsers()):
                    users += list(_usertype.getChildren())
                users_cache = users
            else:  # use users from cache
                users = users_cache

            if req.params.get("usertype") == "intern":
                users = filter(lambda x: x.getUserType() == 'users', users)
            elif req.params.get("usertype") == "all":
                pass
            else:
                users = filter(lambda x: x.getUserType() == req.params.get("usertype"), users)

        elif req.params.get("action") == "search":  # load all users with matching search
            req.params["page"] = "0"
            searchterm = req.params.get('searchterm')
            users = searchUser(searchterm)
            if searchterm:
                searchterm_was = searchterm
                if 'use_macro' in req.params:
                    if "searchterm_was" in req.params and searchterm == req.params.get("searchterm_was"):
                        macro = req.params.get('use_macro')

    elif "actpage" in req.params or "actfilter" in req.params or "filterbutton" in req.params:
        users = users_cache
        showdetails = 1
        if "cancel" in req.params:
            showdetails = 0

    # filter
    if actfilter != "":
        if actfilter in ("all", "*", t(lang(req), "admin_filter_all")):
            None
        elif actfilter == "0-9":
            num = re.compile(r'([0-9])')
            if req.params.get("filtertype", "") == "username":
                users = filter(lambda x: num.match(x.getName()), users)
            else:
                users = filter(lambda x: num.match(x.get("lastname")), users)
        elif actfilter == "else" or actfilter == t(lang(req), "admin_filter_else"):
            all = re.compile(r'([a-z]|[A-Z]|[0-9])')
            if req.params.get("filtertype", "") == "username":
                users = filter(lambda x: not all.match(x.getName()), users)
            else:
                users = filter(lambda x: not all.match(x.get("lastname")), users)
        else:
            if req.params.get("filtertype", "") == "username":
                users = filter(lambda x: x.getName().lower().startswith(actfilter), users)
            else:
                users = filter(lambda x: x.get("lastname").lower().startswith(actfilter), users)

    # sorting
    if order != "":
        if int(order[0:1]) == 0:
            users.sort(lambda x, y: cmp(x.getName().lower(), y.getName().lower()))
        elif int(order[0:1]) == 1:
            users.sort(lambda x, y: cmp(x.getLastName().lower(), y.getLastName().lower()))
        elif int(order[0:1]) == 2:
            users.sort(lambda x, y: cmp(x.getFirstName().lower(), y.getFirstName().lower()))
        elif int(order[0:1]) == 3:
            users.sort(lambda x, y: cmp(x.getEmail().lower(), y.getEmail().lower()))
        elif int(order[0:1]) == 4:
            users.sort(lambda x, y: cmp(x.getOrganisation(), y.getOrganisation()))
        elif int(order[0:1]) == 5:
            users.sort(lambda x, y: cmp(x.getGroups(), y.getGroups()))
        elif int(order[0:1]) == 6:
            users.sort(lambda x, y: cmp(x.stdPassword(), y.stdPassword()))
        if int(order[1:]) == 1:
            users.reverse()
    else:
        users.sort(lambda x, y: cmp(x.getName().lower(), y.getName().lower()))

    def getUsers(req, users):
        if req.params.get("usertype") == "intern":
            users = filter(lambda x: x.getUserType() == 'users', users)
        elif req.params.get("usertype") == "all":
            pass
        else:
            users = filter(lambda x: x.getUserType() == req.params.get("usertype"), users)
        return users

    if usertype:
        users = getUsers(req, users)
    pages = Overview(req, users)
    v = pages.getStdVars()
    v["filterattrs"] = [("username", "admin_user_filter_username"), ("lastname", "admin_user_filter_lastname")]
    v["filterarg"] = req.params.get("filtertype", "username")
    v["sortcol"] = pages.OrderColHeader([t(lang(req), "admin_user_col_" + str(i)) for i in range(1, 9)])

    v["options"] = list(useroption)
    v["users"] = users
    v["pages"] = pages
    v["actfilter"] = actfilter
    v["auth"] = getExternalAuthentificators()
    v["details"] = showdetails

    v["language"] = lang(req)
    v["t"] = t
    v["now"] = datetime.datetime.now
    v["usertype"] = usertype
    v["id_func"] = id  # make sure, this is the python built-in
    v["searchterm_was"] = searchterm_was
    v["execute_search"] = req.params.get("execute_search", "")

    return req.getTAL("web/admin/modules/user.html", v, macro=macro)
Exemple #4
0
def view(req):
    """show all users"""
    global users_cache

    users = []
    order = getSortCol(req)
    actfilter = getFilter(req)
    showdetails = 0
    searchterm_was = ""
    macro = "view"

    usertype = req.params.get("usertype", "")

    if "action" in req.params:
        macro = "details"

        if req.params.get(
                "action") == "details":  # load all users of given type

            if 1:  # len(users_cache)<1: # load users in cache
                # always load users anew: cache-update for dynamic users seems
                # uneconomic: loading users seems to run fast
                users = list(loadUsersFromDB())
                for _usertype in list(getExternalUsers()):
                    users += list(_usertype.getChildren())
                users_cache = users
            else:  # use users from cache
                users = users_cache

            if req.params.get("usertype") == "intern":
                users = filter(lambda x: x.getUserType() == 'users', users)
            elif req.params.get("usertype") == "all":
                pass
            else:
                users = filter(
                    lambda x: x.getUserType() == req.params.get("usertype"),
                    users)

        elif req.params.get(
                "action") == "search":  # load all users with matching search
            req.params["page"] = "0"
            searchterm = req.params.get('searchterm')
            users = searchUser(searchterm)
            if searchterm:
                searchterm_was = searchterm
                if 'use_macro' in req.params:
                    if "searchterm_was" in req.params and searchterm == req.params.get(
                            "searchterm_was"):
                        macro = req.params.get('use_macro')

    elif "actpage" in req.params or "actfilter" in req.params or "filterbutton" in req.params:
        users = users_cache
        showdetails = 1
        if "cancel" in req.params:
            showdetails = 0

    # filter
    if actfilter != "":
        if actfilter in ("all", "*", t(lang(req), "admin_filter_all")):
            None
        elif actfilter == "0-9":
            num = re.compile(r'([0-9])')
            if req.params.get("filtertype", "") == "username":
                users = filter(lambda x: num.match(x.getName()), users)
            else:
                users = filter(lambda x: num.match(x.get("lastname")), users)
        elif actfilter == "else" or actfilter == t(lang(req),
                                                   "admin_filter_else"):
            all = re.compile(r'([a-z]|[A-Z]|[0-9])')
            if req.params.get("filtertype", "") == "username":
                users = filter(lambda x: not all.match(x.getName()), users)
            else:
                users = filter(lambda x: not all.match(x.get("lastname")),
                               users)
        else:
            if req.params.get("filtertype", "") == "username":
                users = filter(
                    lambda x: x.getName().lower().startswith(actfilter), users)
            else:
                users = filter(
                    lambda x: x.get("lastname").lower().startswith(actfilter),
                    users)

    # sorting
    if order != "":
        if int(order[0:1]) == 0:
            users.sort(lambda x, y: cmp(x.getName().lower(),
                                        y.getName().lower()))
        elif int(order[0:1]) == 1:
            users.sort(lambda x, y: cmp(x.getLastName().lower(),
                                        y.getLastName().lower()))
        elif int(order[0:1]) == 2:
            users.sort(lambda x, y: cmp(x.getFirstName().lower(),
                                        y.getFirstName().lower()))
        elif int(order[0:1]) == 3:
            users.sort(lambda x, y: cmp(x.getEmail().lower(),
                                        y.getEmail().lower()))
        elif int(order[0:1]) == 4:
            users.sort(
                lambda x, y: cmp(x.getOrganisation(), y.getOrganisation()))
        elif int(order[0:1]) == 5:
            users.sort(lambda x, y: cmp(x.getGroups(), y.getGroups()))
        elif int(order[0:1]) == 6:
            users.sort(lambda x, y: cmp(x.stdPassword(), y.stdPassword()))
        if int(order[1:]) == 1:
            users.reverse()
    else:
        users.sort(lambda x, y: cmp(x.getName().lower(), y.getName().lower()))

    def getUsers(req, users):
        if req.params.get("usertype") == "intern":
            users = filter(lambda x: x.getUserType() == 'users', users)
        elif req.params.get("usertype") == "all":
            pass
        else:
            users = filter(
                lambda x: x.getUserType() == req.params.get("usertype"), users)
        return users

    if usertype:
        users = getUsers(req, users)
    pages = Overview(req, users)
    v = pages.getStdVars()
    v["filterattrs"] = [("username", "admin_user_filter_username"),
                        ("lastname", "admin_user_filter_lastname")]
    v["filterarg"] = req.params.get("filtertype", "username")
    v["sortcol"] = pages.OrderColHeader(
        [t(lang(req), "admin_user_col_" + str(i)) for i in range(1, 9)])

    v["options"] = list(useroption)
    v["users"] = users
    v["pages"] = pages
    v["actfilter"] = actfilter
    v["auth"] = getExternalAuthentificators()
    v["details"] = showdetails

    v["language"] = lang(req)
    v["t"] = t
    v["now"] = datetime.datetime.now
    v["usertype"] = usertype
    v["id_func"] = id  # make sure, this is the python built-in
    v["searchterm_was"] = searchterm_was
    v["execute_search"] = req.params.get("execute_search", "")

    return req.getTAL("web/admin/modules/user.html", v, macro=macro)