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")
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)
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)