Пример #1
0
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")
Пример #2
0
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
    }
Пример #3
0
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}
Пример #4
0
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")
Пример #5
0
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")
Пример #6
0
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")
Пример #7
0
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
    }