def makeUserList(req, name, rights, readonlyrights, overload=0, type=""): val_left = "" val_right = "" rulelist = acl.getRuleList() userlist = {} userlist['intern'] = users.loadUsersFromDB() for usertype in list(users.getExternalUsers()): userlist[usertype.getName()] = users.getExternalUsers(usertype.getName()) rightsmap = {} rorightsmap = {} for r in rights: for u in getRuleUsers(r, userlist): if translate(u[0], lang(req)) != "": rightsmap[translate(u[0], lang(req)) + ": " + u[1]] = None else: rightsmap[u[1]] = None rrights = [] for r in readonlyrights: if r[0] == "{": for part in getRuleUsers(r, userlist): rrights.append(translate(part[0], lang(req)) + ": " + part[1]) else: rrights.append(r) readonlyrights = rrights if not (len(rightsmap) > 0 and overload): # inherited standard rules for rule in rulelist: if rule.getName() in readonlyrights: val_left += """<optgroup label="%s"></optgroup>""" % (rule.getDescription()) rorightsmap[rule.getName()] = 1 # inherited implicit rules for rule in readonlyrights: if rule not in rorightsmap: val_left += """<optgroup label="%s"></optgroup>""" % (rule) # node-level implicit rules for r in rightsmap.keys(): if not rightsmap[r] and r not in rorightsmap: val_left += """<option value="%s">%s</option>""" % (r, r) for usertype in userlist.keys(): susers = list(userlist[usertype]) susers.sort(lambda x, y: cmp(x.getName().lower(), y.getName().lower())) for user in susers: if translate(usertype, lang(req)) + ": " + user.getName() not in rightsmap and user.getName() not in rorightsmap and translate( usertype, lang(req)) + ": " + user.getName() not in readonlyrights: val_right += """<option value="%s">%s</option>""" % ( translate(usertype, lang(req)) + ": " + user.getName(), translate(usertype, lang(req)) + ": " + user.getName()) return {"name": name, "val_left": val_left, "val_right": val_right, "type": type}
def fill_users_cache(verbose=True): global users_cache atime = time.time() internal_users = loadUsersFromDB() if verbose: log.info("%.3f sec. to load %r internal users" % (time.time() - atime, len(internal_users))) atime = time.time() res = internal_users for usertype in list(getExternalUsers()): # this loop will also loop the dynamic authenticators ext_users = list(usertype.getChildren()) res += ext_users if verbose: log.info("%.3f sec. to load %r external users of type %r" % (time.time() - atime, len(ext_users), usertype.name)) atime = time.time() users_cache = res
def load_shoppingbagByKey(req): bagkey = req.params.get("bagkey", "") if bagkey == "": return 1 for user in users.loadUsersFromDB(): for c in user.getShoppingBag(): if c.getSharedKey() == bagkey: req.session["shoppingbag"] = c.getItems() return 1 candidates = db.getNodeIdByAttribute("key", bagkey) home_root = tree.getRoot("home") for cand in candidates: n = tree.getNode(cand) if not n.getContentType() == "shoppingbag": continue if isDescendantOf(n, home_root): req.session["shoppingbag"] = n.getItems() return 1 return 0
def showEditor(req): v = {} usersel = """\"<table border=\\"0\\"><tr><td valign=\\"top\\">""" + \ t(lang(req), "admin_acl_editor_user") + \ """:</td><td><select name=\\"users\\" id=\\"users\\" size=\\"4\\" onclick=\\"setValue(this)\\">""" for user in loadUsersFromDB(): usersel += """<option value=\\\"""" + user.getName( ) + """\\\">""" + user.getName() + """</option>""" usersel += """</tr></table>\"""" v["userstr"] = usersel groupsel = """\"<table border=\\"0\\"><tr><td valign=\\"top\\">""" + \ t(lang(req), "admin_acl_editor_group") + \ """:</td><td><select name=\\"users\\" id=\\"users\\" size=\\"4\\" ONCLICK=setValue(this)>""" for group in loadGroupsFromDB(): groupsel += """<option value=\\\"""" + group.getName( ) + """\\\">""" + group.getName() + """</option>""" groupsel += """</tr></table>\"""" v["groupstr"] = groupsel v["datestr"] = """\"<table border=\\"0\\"><tr><td rowspan=\\"2\\" valign=\\"top\\">""" + t( lang(req), "admin_acl_editor_operator" ) + """:</td><td rowspan=\\"2\\"><select name=\\"ruleop\\" id=\\"ruleop\\" size=\\"4\\" ONCLICK=setValue(this) ><option value=\\"<= \\"><=</option><option value=\\">= \\">>=</option><option value=\\"< \\"><</option><option value=\\"> \\">></option></select></td><td valign=\\"top\\">""" + t( lang(req), "admin_acl_editor_date" ) + """:</td><td><input type=\\"text\\" name=\\"date\\" id=\\"datevalue\\" size=\\"10\\" maxlength=\\"10\\"><button name=\\"dateselect\\" type=\\"button\\" ONCLICK=setValue(this)>""" + t( lang(req), "admin_acl_editor_buttonok" ) + """</button></td> </tr><tr><td align=\\"right\\" colspan=\\"2\\"><small>""" + t( lang(req), "admin_acl_editor_format" ) + """: dd.mm.yyyy</small></td></tr></table>\"""" v["ipstr"] = """\"<table border=\\"0\\"><tr><td valign=\\"top\\">""" + t( lang(req), "admin_acl_editor_ip" ) + """:</td><td><input type=\\"text\\" name=\\"ipvalue\\" id=\\"ipvalue\\" size=\\"15\\"><button name=\\"ipselect\\" type=\\"button\\" ONCLICK=setValue(this)>""" + t( lang(req), "admin_acl_editor_buttonok" ) + """</button></td></tr><tr><td align=\\"right\\" colspan=\\"2\\"><small>""" + t( lang(req), "admin_acl_editor_format" ) + """: xxx.xxx.xxx.xxx</small></td></tr></table>\"""" return req.getTAL("web/admin/modules/acls.html", v, macro="acleditor")
def showEditor(req): v = {} usersel = """\"<table border=\\"0\\"><tr><td valign=\\"top\\">""" + \ t(lang(req), "admin_acl_editor_user") + \ """:</td><td><select name=\\"users\\" id=\\"users\\" size=\\"4\\" onclick=\\"setValue(this)\\">""" for user in loadUsersFromDB(): usersel += """<option value=\\\"""" + user.getName() + """\\\">""" + user.getName() + """</option>""" usersel += """</tr></table>\"""" v["userstr"] = usersel groupsel = """\"<table border=\\"0\\"><tr><td valign=\\"top\\">""" + \ t(lang(req), "admin_acl_editor_group") + \ """:</td><td><select name=\\"users\\" id=\\"users\\" size=\\"4\\" ONCLICK=setValue(this)>""" for group in loadGroupsFromDB(): groupsel += """<option value=\\\"""" + group.getName() + """\\\">""" + group.getName() + """</option>""" groupsel += """</tr></table>\"""" v["groupstr"] = groupsel v["datestr"] = """\"<table border=\\"0\\"><tr><td rowspan=\\"2\\" valign=\\"top\\">""" + t( lang(req), "admin_acl_editor_operator") + """:</td><td rowspan=\\"2\\"><select name=\\"ruleop\\" id=\\"ruleop\\" size=\\"4\\" ONCLICK=setValue(this) ><option value=\\"<= \\"><=</option><option value=\\">= \\">>=</option><option value=\\"< \\"><</option><option value=\\"> \\">></option></select></td><td valign=\\"top\\">""" + t( lang(req), "admin_acl_editor_date") + """:</td><td><input type=\\"text\\" name=\\"date\\" id=\\"datevalue\\" size=\\"10\\" maxlength=\\"10\\"><button name=\\"dateselect\\" type=\\"button\\" ONCLICK=setValue(this)>""" + t( lang(req), "admin_acl_editor_buttonok") + """</button></td> </tr><tr><td align=\\"right\\" colspan=\\"2\\"><small>""" + t( lang(req), "admin_acl_editor_format") + """: dd.mm.yyyy</small></td></tr></table>\"""" v["ipstr"] = """\"<table border=\\"0\\"><tr><td valign=\\"top\\">""" + t( lang(req), "admin_acl_editor_ip") + """:</td><td><input type=\\"text\\" name=\\"ipvalue\\" id=\\"ipvalue\\" size=\\"15\\"><button name=\\"ipselect\\" type=\\"button\\" ONCLICK=setValue(this)>""" + t( lang(req), "admin_acl_editor_buttonok") + """</button></td></tr><tr><td align=\\"right\\" colspan=\\"2\\"><small>""" + t( lang(req), "admin_acl_editor_format") + """: xxx.xxx.xxx.xxx</small></td></tr></table>\"""" return req.getTAL("web/admin/modules/acls.html", v, macro="acleditor")
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)
def makeUserList(req, name, rights, readonlyrights, overload=0, type=""): val_left = "" val_right = "" rulelist = acl.getRuleList() userlist = {} userlist['intern'] = users.loadUsersFromDB() for usertype in list(users.getExternalUsers()): userlist[usertype.getName()] = users.getExternalUsers( usertype.getName()) rightsmap = {} rorightsmap = {} for r in rights: for u in getRuleUsers(r, userlist): if translate(u[0], lang(req)) != "": rightsmap[translate(u[0], lang(req)) + ": " + u[1]] = None else: rightsmap[u[1]] = None rrights = [] for r in readonlyrights: if r[0] == "{": for part in getRuleUsers(r, userlist): rrights.append(translate(part[0], lang(req)) + ": " + part[1]) else: rrights.append(r) readonlyrights = rrights if not (len(rightsmap) > 0 and overload): # inherited standard rules for rule in rulelist: if rule.getName() in readonlyrights: val_left += """<optgroup label="%s"></optgroup>""" % ( rule.getDescription()) rorightsmap[rule.getName()] = 1 # inherited implicit rules for rule in readonlyrights: if rule not in rorightsmap: val_left += """<optgroup label="%s"></optgroup>""" % (rule) # node-level implicit rules for r in rightsmap.keys(): if not rightsmap[r] and r not in rorightsmap: val_left += """<option value="%s">%s</option>""" % (r, r) for usertype in userlist.keys(): susers = list(userlist[usertype]) susers.sort(lambda x, y: cmp(x.getName().lower(), y.getName().lower())) for user in susers: if translate(usertype, lang(req)) + ": " + user.getName( ) not in rightsmap and user.getName( ) not in rorightsmap and translate(usertype, lang( req)) + ": " + user.getName() not in readonlyrights: val_right += """<option value="%s">%s</option>""" % ( translate(usertype, lang(req)) + ": " + user.getName(), translate(usertype, lang(req)) + ": " + user.getName()) return { "name": name, "val_left": val_left, "val_right": val_right, "type": type }