def WorkflowDetail(req, id, err=0): v = getAdminStdVars(req) if err == 0 and id == "": # new workflow workflow = tree.Node("", type="workflow") v["original_name"] = "" elif id != "" and err == 0: # edit workflow workflow = getWorkflow(id) v["original_name"] = workflow.getName() else: # error workflow = tree.Node("", type="workflow") workflow.setName(req.params.get("name", "")) workflow.setDescription(req.params.get("description", "")) #workflow.setAccess("write", req.params.get("writeaccess", "")) v["original_name"] = req.params.get("orig_name", "") workflow.id = req.params.get("id") rule = {"read": str(workflow.getAccess("read") or "").split(","), "write": str(workflow.getAccess("write") or "").split(",")} v["acl_read"] = makeList(req, "read", removeEmptyStrings(rule["read"]), {}, overload=0, type="read") v["acl_write"] = makeList(req, "write", removeEmptyStrings(rule["write"]), {}, overload=0, type="write") v["workflow"] = workflow v["languages"] = config.get("i18n.languages", "en").split(",") v["error"] = err v["rules"] = getRuleList() v["actpage"] = req.params.get("actpage") return req.getTAL("web/admin/modules/workflows.html", v, macro="modify")
def makeList(req, name, rights, readonlyrights, overload=0, type=""): rightsmap = {} rorightsmap = {} for r in rights: rightsmap[r] = None rulelist = acl.getRuleList() val_left = "" val_right = "" if not (len(rightsmap) > 0 and overload): # inherited standard rules for rule in rulelist: if rule.getName() in readonlyrights: if rule.getDescription().startswith("{"): val_left += """<optgroup label="%s"></optgroup>""" % ( translate("edit_acl_special_rule", lang(req))) else: val_left += """<optgroup label="%s"></optgroup>""" % ( rule.getDescription()) rorightsmap[rule.getName()] = 1 # inherited implicit rules for rule in readonlyrights: if rule not in rorightsmap: if rule.startswith("{"): val_left += """<optgroup label="%s"></optgroup>""" % ( translate("edit_acl_special_rule", lang(req))) else: val_left += """<optgroup label="%s"></optgroup>""" % (rule) # node-level standard rules for rule in rulelist: if rule.getName() in rightsmap: val_left += """<option value="%s">%s</option>""" % ( rule.getName(), rule.getDescription()) rightsmap[rule.getName()] = 1 # node-level implicit rules for r in rightsmap.keys(): if not rightsmap[r] and r not in rorightsmap: if r.startswith( "{"): # special rights not changeable in normal ACL area val_left += """<option value="%s">%s</option>""" % ( r, translate("edit_acl_special_rule", lang(req))) else: val_left += """<option value="%s">%s</option>""" % (r, r) for rule in rulelist: if rule.getName() not in rightsmap and rule.getName( ) not in rorightsmap: val_right += """<option value="%s">%s</option>""" % ( rule.getName(), rule.getDescription()) return { "name": name, "val_left": val_left, "val_right": val_right, "type": type }
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 view(req): rules = acl.getRuleList() actfilter = getFilter(req) order = getSortCol(req) # filter if actfilter != "": if actfilter in ("all", "*", t(lang(req), "admin_filter_all")): None # all users elif actfilter == "0-9": num = re.compile(r'([0-9])') rules = filter(lambda x: num.match(x.getName()), rules) elif actfilter == "else" or actfilter == t(lang(req), "admin_filter_else"): all = re.compile(r'([a-z]|[A-Z]|[0-9])') rules = filter(lambda x: not all.match(x.getName()), rules) else: rules = filter(lambda x: x.getName().lower().startswith(actfilter), rules) pages = Overview(req, rules) # sorting if order != "": if int(order[0:1]) == 0: rules.sort(lambda x, y: cmp(x.getName().lower(), y.getName().lower())) elif int(order[0:1]) == 1: rules.sort(lambda x, y: cmp(x.rulestr, y.rulestr)) elif int(order[0:1]) == 2: rules.sort(lambda x, y: cmp(x.description, y.description)) if int(order[1:]) == 1: rules.reverse() else: rules.sort(lambda x, y: cmp(x.getName().lower(), y.getName().lower())) v = getAdminStdVars(req) v["sortcol"] = pages.OrderColHeader([ t(lang(req), "admin_acl_col_1"), t(lang(req), "admin_acl_col_2"), t(lang(req), "admin_acl_col_3") ]) v["rules"] = rules v["pages"] = pages v["missing_rules"] = acl.getMissingRuleNames() v["actfilter"] = actfilter return req.getTAL("web/admin/modules/acls.html", v, macro="view")
def WorkflowDetail(req, id, err=0): v = getAdminStdVars(req) if err == 0 and id == "": # new workflow workflow = tree.Node("", type="workflow") v["original_name"] = "" elif id != "" and err == 0: # edit workflow workflow = getWorkflow(id) v["original_name"] = workflow.getName() else: # error workflow = tree.Node("", type="workflow") workflow.setName(req.params.get("name", "")) workflow.setDescription(req.params.get("description", "")) #workflow.setAccess("write", req.params.get("writeaccess", "")) v["original_name"] = req.params.get("orig_name", "") workflow.id = req.params.get("id") rule = { "read": str(workflow.getAccess("read") or "").split(","), "write": str(workflow.getAccess("write") or "").split(",") } v["acl_read"] = makeList(req, "read", removeEmptyStrings(rule["read"]), {}, overload=0, type="read") v["acl_write"] = makeList(req, "write", removeEmptyStrings(rule["write"]), {}, overload=0, type="write") v["workflow"] = workflow v["languages"] = config.get("i18n.languages", "en").split(",") v["error"] = err v["rules"] = getRuleList() v["actpage"] = req.params.get("actpage") return req.getTAL("web/admin/modules/workflows.html", v, macro="modify")
def view(req): rules = acl.getRuleList() actfilter = getFilter(req) order = getSortCol(req) # filter if actfilter != "": if actfilter in ("all", "*", t(lang(req), "admin_filter_all")): None # all users elif actfilter == "0-9": num = re.compile(r'([0-9])') rules = filter(lambda x: num.match(x.getName()), rules) elif actfilter == "else" or actfilter == t(lang(req), "admin_filter_else"): all = re.compile(r'([a-z]|[A-Z]|[0-9])') rules = filter(lambda x: not all.match(x.getName()), rules) else: rules = filter(lambda x: x.getName().lower().startswith(actfilter), rules) pages = Overview(req, rules) # sorting if order != "": if int(order[0:1]) == 0: rules.sort(lambda x, y: cmp(x.getName().lower(), y.getName().lower())) elif int(order[0:1]) == 1: rules.sort(lambda x, y: cmp(x.rulestr, y.rulestr)) elif int(order[0:1]) == 2: rules.sort(lambda x, y: cmp(x.description, y.description)) if int(order[1:]) == 1: rules.reverse() else: rules.sort(lambda x, y: cmp(x.getName().lower(), y.getName().lower())) v = getAdminStdVars(req) v["sortcol"] = pages.OrderColHeader([t(lang(req), "admin_acl_col_1"), t(lang(req), "admin_acl_col_2"), t(lang(req), "admin_acl_col_3")]) v["rules"] = rules v["pages"] = pages v["missing_rules"] = acl.getMissingRuleNames() v["actfilter"] = actfilter return req.getTAL("web/admin/modules/acls.html", v, macro="view")
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 }