コード例 #1
0
ファイル: user.py プロジェクト: agromsl/mediatum
def sendmailUser_mask(req, id, err=0):

    v = getAdminStdVars(req)
    v["path"] = req.path[1:]

    if id in["execute", "execu"]:

        userid = req.params.get("userid")
        user = getUser(userid)
        if not user:
            path = req.path[1:].split("/")
            user = getExternalUser(userid, path[-1])

        password = makeRandomPassword()
        user.resetPassword(password)

        text = req.params.get("text")
        text = text.replace("[wird eingesetzt]", password)
        try:
            mail.sendmail(req.params.get("from"), req.params.get("email"), req.params.get("subject"), text)
        except mail.SocketError:
            print "Socket error while sending mail"
            req.setStatus(httpstatus.HTTP_INTERNAL_SERVER_ERROR)
            return req.getTAL("web/admin/modules/user.html", v, macro="sendmailerror")
        return req.getTAL("web/admin/modules/user.html", v, macro="sendmaildone")

    user = getUser(id)
    if not user:
        path = req.path[1:].split("/")
        user = getExternalUser(id, path[-1])

    collections = []
    seen = {}
    access = acl.AccessData(user=user)
    for node in getAllCollections():
        if access.hasReadAccess(node):
            if access.hasWriteAccess(node):
                collections.append(node.name + " (lesen/schreiben)")
                seen[node.id] = None
    for node in tree.getRoot("collections").getChildren():
        if access.hasReadAccess(node) and node.id not in seen:
            collections.append(node.name + " (nur lesen)")
    x = {}
    x["name"] = "%s %s" % (user.getFirstName(), user.getLastName())
    if(x["name"] == ""):
        x["name"] = user.getName()
    x["host"] = config.get("host.name")
    x["login"] = user.getName()
    x["isEditor"] = user.isEditor()
    x["collections"] = list()
    x["groups"] = user.getGroups()
    x["groups"].sort()
    x["language"] = lang(req)
    x["collections"] = collections
    x["collections"].sort()

    v["mailtext"] = req.getTAL("web/admin/modules/user.html", x, macro="emailtext").strip()
    v["email"] = user.getEmail()
    v["userid"] = user.getName()
    return req.getTAL("web/admin/modules/user.html", v, macro="sendmail")
コード例 #2
0
ファイル: logfile.py プロジェクト: agromsl/mediatum
def view(req, op):
    logfile = None
    name = ""

    pages = Overview(req, filelist)
    v = getAdminStdVars(req)
    v["filelist"] = filelist
    v["pages"] = pages
    text = req.getTAL("web/admin/modules/logfile.html", v, macro="view")

    # refresh part
    if "name" in req.params.keys():
        name = req.params.get("name", "")

    # load file part
    for key in req.params.keys():
        if key.startswith("view_"):
            name = key[5:-2]

    for file in filelist:
        if file.getName() == name:
            logfile = file

    # return form with file-content
    if logfile is not None:
        text += req.getTAL("web/admin/modules/logfile.html",
                           {"logfile": logfile, "content": getFileContent(logfile.getPath())}, macro="detail")
    return text
コード例 #3
0
ファイル: workflows.py プロジェクト: agromsl/mediatum
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")
コード例 #4
0
def editMappingField_mask(req, id, parent, err=0):
    if err == 0 and id == "":
        # new mapping field
        field = MappingField(u"")
        db.session.add(field)
    elif id != "":
        # edit mapping field
        field = q(Node).get(id)
    else:
        # error while filling values
        field = MappingField(u"")
        field.name = req.params.get("name", u"")
        field.setDescription(req.params.get("description", u""))
        field.setExportFormat(req.params.get("exportformat", u""))
        if "mandatory" in req.params.keys():
            field.setMandatory("True")
        db.session.commit()

    v = getAdminStdVars(req)
    v["error"] = err
    v["field"] = field
    v["parent"] = parent
    v["actpage"] = req.params.get("actpage")
    v["csrf"] = req.csrf_token.current_token
    return req.getTAL("web/admin/modules/mapping.html", v, macro="modifyfield")
コード例 #5
0
ファイル: logfile.py プロジェクト: hibozzy/mediatum
def view(req, op):
    logfile = None
    name = ""

    pages = Overview(req, filelist)
    v = getAdminStdVars(req)
    v["filelist"] = filelist
    v["pages"] = pages
    text = req.getTAL("web/admin/modules/logfile.html", v, macro="view")

    # refresh part
    if "name" in req.params.keys():
        name = req.params.get("name", "")

    # load file part
    for key in req.params.keys():
        if key.startswith("view_"):
            name = key[5:-2]

    for file in filelist:
        if file.getName() == name:
            logfile = file

    # return form with file-content
    if logfile is not None:
        text += req.getTAL("web/admin/modules/logfile.html", {
            "logfile": logfile,
            "content": getFileContent(logfile.getPath())
        },
                           macro="detail")
    return text
コード例 #6
0
ファイル: mapping.py プロジェクト: agromsl/mediatum
def editMapping_mask(req, id, err=0):
    if err == 0 and id == "":
        # new mapping
        mapping = tree.Node("", type="mapping")
    elif id != "":
        # edit mapping
        mapping = getMapping(id)
    else:
        # error while filling values
        mapping = tree.Node("", type="mapping")
        mapping.setName(req.params.get("name", ""))
        mapping.setDescription(req.params.get("description", ""))
        mapping.setNamespace(req.params.get("namespace", ""))
        mapping.setNamespaceUrl(req.params.get("namespaceurl", ""))
        mapping.setHeader(req.params.get("header"))
        mapping.setFooter(req.params.get("footer"))
        mapping.setSeparator(req.params.get("separator"))
        mapping.setStandardFormat(req.params.get("standardformat"))

    v = getAdminStdVars(req)
    v["error"] = err
    v["mapping"] = mapping
    v["id"] = id
    v["actpage"] = req.params.get("actpage")
    v["mappingtypes"] = getMappingTypes()
    return req.getTAL("web/admin/modules/mapping.html", v, macro="modify")
コード例 #7
0
ファイル: workflows.py プロジェクト: mediatum/mediatum
def WorkflowStepList(req, wid):
    global _cssclass, _page
    workflow = getWorkflow(wid)
    workflowsteps = list(workflow.getSteps())
    order = getSortCol(req)
    actfilter = getFilter(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])')
            workflowsteps = filter(lambda x: num.match(x.name), workflowsteps)
        elif actfilter == "else" or actfilter == t(lang(req), "admin_filter_else"):
            all = re.compile(r'([a-z]|[A-Z]|[0-9])')
            workflowsteps = filter(lambda x: not all.match(x.name), workflowsteps)
        else:
            workflowsteps = filter(lambda x: x.name.lower().startswith(actfilter), workflowsteps)

    pages = Overview(req, workflowsteps)

    # sorting
    if order != "":
        if int(order[0]) == 0:
            workflowsteps.sort(lambda x, y: cmp(x.name.lower(), y.name.lower()))
        elif int(order[0]) == 1:
            workflowsteps.sort(lambda x, y: cmp(x.type, y.type))
        elif int(order[0]) == 2:
            workflowsteps.sort(lambda x, y: cmp(x.getTrueId(), y.getTrueId()))
        elif int(order[0]) == 3:
            workflowsteps.sort(lambda x, y: cmp(x.getFalseId(), y.getFalseId()))
        elif int(order[0]) == 4:
            workflowsteps.sort(lambda x, y: cmp(len(x.get("description")), len(y.get("description"))))
        # elif int(order[0]) == 5:
            # workflowstep.sort(lambda x, y: cmp(x.getAccess("read"), y.getAccess("read")))
        # elif int(order[0]) == 6:
            # workflowstep.sort(lambda x, y: cmp(x.getAccess("write"), y.getAccess("write")))
        if int(order[1]) == 1:
            workflowsteps.reverse()
    else:
        workflowsteps.sort(lambda x, y: cmp(x.name.lower(), y.name.lower()))

    v = getAdminStdVars(req)
    v["sortcol"] = pages.OrderColHeader(
        [
            t(
                lang(req), "admin_wfstep_col_1"), t(
                lang(req), "admin_wfstep_col_2"), t(
                    lang(req), "admin_wfstep_col_3"), t(
                        lang(req), "admin_wfstep_col_4"), t(
                            lang(req), "admin_wfstep_col_5"), t(
                                lang(req), "admin_wfstep_col_6"), t(
                                    lang(req), "admin_wfstep_col_7")])
    v["workflow"] = workflow
    v["workflowsteps"] = workflowsteps
    v["pages"] = pages
    v["actfilter"] = actfilter
    v["csrf"] = req.csrf_token.current_token
    return req.getTAL("web/admin/modules/workflows.html", v, macro="view_step")
コード例 #8
0
ファイル: mapping.py プロジェクト: hibozzy/mediatum
def editMapping_mask(req, id, err=0):
    if err == 0 and id == "":
        # new mapping
        mapping = tree.Node("", type="mapping")
    elif id != "":
        # edit mapping
        mapping = getMapping(id)
    else:
        # error while filling values
        mapping = tree.Node("", type="mapping")
        mapping.setName(req.params.get("name", ""))
        mapping.setDescription(req.params.get("description", ""))
        mapping.setNamespace(req.params.get("namespace", ""))
        mapping.setNamespaceUrl(req.params.get("namespaceurl", ""))
        mapping.setHeader(req.params.get("header"))
        mapping.setFooter(req.params.get("footer"))
        mapping.setSeparator(req.params.get("separator"))
        mapping.setStandardFormat(req.params.get("standardformat"))

    v = getAdminStdVars(req)
    v["error"] = err
    v["mapping"] = mapping
    v["id"] = id
    v["actpage"] = req.params.get("actpage")
    v["mappingtypes"] = getMappingTypes()
    return req.getTAL("web/admin/modules/mapping.html", v, macro="modify")
コード例 #9
0
ファイル: metatype.py プロジェクト: schnittstabil/mediatum
def MetatypeDetail(req, id, err=0):
    v = getAdminStdVars(req)

    if err == 0 and id == "":
        # new metadatatype
        metadatatype = Metadatatype(u"")
        db.session.commit()
        v["original_name"] = ""

    elif id != "" and err == 0:
        # edit metadatatype
        metadatatype = getMetaType(id)
        v["original_name"] = metadatatype.getName()

    else:
        # error
        metadatatype = Metadatatype(req.params["mname"])
        metadatatype.set("description", req.params["description"])
        metadatatype.set("longname", req.params["mlongname"])
        metadatatype.set("active", "mactive" in req.params)
        metadatatype.set("datatypes",
                         req.params.get("mdatatypes", "").replace(";", ", "))
        metadatatype.set("bibtexmapping", req.params.get("mbibtex", ""))
        metadatatype.set("citeprocmapping", req.params.get("mciteproc", ""))
        db.session.commit()
        v["original_name"] = req.params["mname_orig"]
    d = Data()
    v["datatypes"] = d.get_all_datatypes()
    v["datatypes"].sort(
        lambda x, y: cmp(t(lang(req), x.__name__), t(lang(req), y.__name__)))
    v["metadatatype"] = metadatatype
    v["error"] = err
    v["bibtextypes"] = getAllBibTeXTypes()
    v["bibtexselected"] = metadatatype.get("bibtexmapping").split(";")
    v["citeproctypes"] = citeproc.TYPES
    v["citeprocselected"] = metadatatype.get("citeprocmapping").split(";")

    try:
        rules = [
            r.ruleset_name
            for r in metadatatype.access_ruleset_assocs.filter_by(
                ruletype=u'read')
        ]
    except:
        rules = []

    v["acl"] = makeList(req,
                        "read",
                        removeEmptyStrings(rules), {},
                        overload=0,
                        type="read")
    v["filtertype"] = req.params.get("filtertype", "")
    v["actpage"] = req.params.get("actpage")
    v["csrf"] = req.csrf_token.current_token
    return req.getTAL("web/admin/modules/metatype.html",
                      v,
                      macro="modify_type")
コード例 #10
0
ファイル: mapping.py プロジェクト: hibozzy/mediatum
def viewlist(req, id):
    mapping = getMapping(id)

    fields = list(mapping.getFields())
    order = getSortCol(req)
    actfilter = getFilter(req)

    # filter
    if actfilter != "":
        if actfilter in ("all", "*", (lang(req), "admin_filter_all")):
            None  # all mappings
        elif actfilter == "0-9":
            num = re.compile(r'([0-9])')
            fields = filter(lambda x: num.match(x.getName()), fields)

        elif actfilter == "else" or actfilter == t(lang(req),
                                                   "admin_filter_else"):
            all = re.compile(r'([a-z]|[A-Z]|[0-9])')
            fields = filter(lambda x: not all.match(x.getName()), fields)

        else:
            fields = filter(
                lambda x: x.getName().lower().startswith(actfilter), fields)

    pages = Overview(req, fields)

    # sorting
    if order != "":
        if int(order[0:1]) == 0:
            fields.sort(lambda x, y: cmp(x.getName().lower(),
                                         y.getName().lower()))
        elif int(order[0:1]) == 1:
            fields.sort(lambda x, y: cmp(x.getDescription().lower(),
                                         y.getDescription().lower()))
        elif int(order[0:1]) == 2:
            fields.sort(lambda x, y: cmp(x.getMandatory(), y.getMandatory()))

        if int(order[1:]) == 1:
            fields.reverse()
    else:
        fields.sort(lambda x, y: cmp(x.getName().lower(), y.getName().lower()))

    v = getAdminStdVars(req)
    v["sortcol"] = pages.OrderColHeader([
        t(lang(req), "admin_mappingfield_col_1"),
        t(lang(req), "admin_mappingfield_col_2"),
        t(lang(req), "admin_mappingfield_col_3")
    ],
                                        addparams="&detailof=" +
                                        str(mapping.id))
    v["fields"] = fields
    v["mapping"] = mapping
    v["options"] = []
    v["pages"] = pages
    v["actfilter"] = actfilter
    return req.getTAL("web/admin/modules/mapping.html", v, macro="viewlist")
コード例 #11
0
def view(req):
    groups = list(loadGroupsFromDB())
    order = getSortCol(req)
    actfilter = getFilter(req)

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

    pages = Overview(req, groups)

    # sorting
    if order != "":
        if int(order[0:1]) == 0:
            groups.sort(lambda x, y: cmp(x.getName().lower(),
                                         y.getName().lower()))
        elif int(order[0:1]) == 1:
            groups.sort(lambda x, y: cmp(getNumUsers(x.getName()),
                                         getNumUsers(y.getName())))
        elif int(order[0:1]) == 2:
            gl = {}
            for g in groups:
                gl[g.id] = g.getSchemas()
            groups.sort(lambda x, y: cmp(len(gl[x.id]), len(gl[y.id])))
        elif int(order[0:1]) == 3:
            groups.sort(lambda x, y: cmp(x.getHideEdit() == "",
                                         y.getHideEdit() == ""))

        if int(order[1:]) == 1:
            groups.reverse()
    # else:
    #    groups.sort(lambda x, y: cmp(x.getName().lower(),y.getName().lower()))

    v = getAdminStdVars(req)
    v["sortcol"] = pages.OrderColHeader([
        t(lang(req), "admin_usergroup_col_1"),
        t(lang(req), "admin_usergroup_col_2"),
        t(lang(req), "admin_usergroup_col_3"),
        t(lang(req), "admin_usergroup_col_4")
    ])
    v["options"] = list(groupoption)
    v["groups"] = groups
    v["pages"] = pages
    v["actfilter"] = actfilter
    return req.getTAL("/web/admin/modules/usergroup.html", v, macro="view")
コード例 #12
0
def view(req, op):
    v = getAdminStdVars(req)

    v["msg"] = ""
    v["op"] = op
    if op == "db":
        v["msg"] = "admin_flush_data_cleared"
    # elif op == "all":
    #    v["msg"] = "admin_flush_all_cleared"
    return req.getTAL("web/admin/modules/flush.html", v, macro="view")
コード例 #13
0
ファイル: workflows.py プロジェクト: schnittstabil/mediatum
def WorkflowDetail(req, id, err=0):
    v = getAdminStdVars(req)
    if err == 0 and id == "":
        # new workflow
        workflow = Workflow(u"")
        db.session.commit()
        v["original_name"] = ""

    elif id != "" and err == 0:
        # edit workflow
        workflow = getWorkflow(id)
        v["original_name"] = workflow.name

    else:
        # error
        workflow = Workflow(u"")
        workflow.name = req.params.get("name", "")
        workflow.set("description", 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")
        db.session.commit()

    try:
        rule = {
            "read": [
                r.ruleset_name
                for r in workflow.access_ruleset_assocs.filter_by(
                    ruletype='read')
            ],
            "write": [
                r.ruleset_name
                for r in workflow.access_ruleset_assocs.filter_by(
                    ruletype='write')
            ]
        }
    except:
        rule = {"read": [], "write": []}

    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.languages
    v["error"] = err
    v["actpage"] = req.params.get("actpage")
    v["csrf"] = req.csrf_token.current_token
    return req.getTAL("web/admin/modules/workflows.html", v, macro="modify")
コード例 #14
0
ファイル: workflows.py プロジェクト: hibozzy/mediatum
def view(req):
    workflows = list(getWorkflowList())
    order = getSortCol(req)
    actfilter = getFilter(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])')
            workflows = filter(lambda x: num.match(x.getName()), workflows)
        elif actfilter == "else" or actfilter == t(lang(req),
                                                   "admin_filter_else"):
            all = re.compile(r'([a-z]|[A-Z]|[0-9])')
            workflows = filter(lambda x: not all.match(x.getName()), workflows)
        else:
            workflows = filter(
                lambda x: x.getName().lower().startswith(actfilter), workflows)

    pages = Overview(req, workflows)

    # sorting
    if order != "":
        if int(order[0:1]) == 1:
            workflows.sort(lambda x, y: cmp(x.getName(), y.getName()))
        elif int(order[0:1]) == 2:
            workflows.sort(
                lambda x, y: cmp(x.getDescription(), y.getDescription()))
        elif int(order[0:1]) == 3:
            workflows.sort(
                lambda x, y: cmp(x.getAccess("read"), y.getAccess("read")))
        elif int(order[0:1]) == 4:
            workflows.sort(
                lambda x, y: cmp(x.getAccess("write"), y.getAccess("write")))
        if int(order[1:]) == 1:
            workflows.reverse()

    v = getAdminStdVars(req)
    v["sortcol"] = pages.OrderColHeader([
        t(lang(req), "admin_wf_col_1"),
        t(lang(req), "admin_wf_col_2"),
        t(lang(req), "admin_wf_col_3"),
        t(lang(req), "admin_wf_col_4")
    ])
    v["workflows"] = workflows
    v["pages"] = pages
    v["actfilter"] = actfilter

    return req.getTAL("web/admin/modules/workflows.html", v, macro="view")
コード例 #15
0
ファイル: mapping.py プロジェクト: mediatum/mediatum
def viewlist(req, id):
    mapping = getMapping(id)

    fields = list(mapping.getFields())
    order = getSortCol(req)
    actfilter = getFilter(req)

    # filter
    if actfilter != "":
        if actfilter in ("all", "*", (lang(req), "admin_filter_all")):
            None  # all mappings
        elif actfilter == "0-9":
            num = re.compile(r'([0-9])')
            fields = filter(lambda x: num.match(x.name), fields)

        elif actfilter == "else" or actfilter == t(lang(req), "admin_filter_else"):
            all = re.compile(r'([a-z]|[A-Z]|[0-9])')
            fields = filter(lambda x: not all.match(x.name), fields)

        else:
            fields = filter(lambda x: x.name.lower().startswith(actfilter), fields)

    pages = Overview(req, fields)

    # sorting
    if order != "":
        if int(order[0:1]) == 0:
            fields.sort(lambda x, y: cmp(x.name.lower(), y.name.lower()))
        elif int(order[0:1]) == 1:
            fields.sort(lambda x, y: cmp(x.getDescription().lower(), y.getDescription().lower()))
        elif int(order[0:1]) == 2:
            fields.sort(lambda x, y: cmp(x.getMandatory(), y.getMandatory()))

        if int(order[1:]) == 1:
            fields.reverse()
    else:
        fields.sort(lambda x, y: cmp(x.name.lower(), y.name.lower()))

    v = getAdminStdVars(req)
    v["sortcol"] = pages.OrderColHeader([t(lang(req), "admin_mappingfield_col_1"), t(lang(req), "admin_mappingfield_col_2"), t(
        lang(req), "admin_mappingfield_col_3")], addparams="&detailof=" + unicode(mapping.id))
    v["fields"] = fields
    v["mapping"] = mapping
    v["options"] = []
    v["pages"] = pages
    v["actfilter"] = actfilter
    v["csrf"] = req.csrf_token.current_token
    return req.getTAL("web/admin/modules/mapping.html", v, macro="viewlist")
コード例 #16
0
ファイル: user.py プロジェクト: agromsl/mediatum
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")
コード例 #17
0
ファイル: acls.py プロジェクト: hibozzy/mediatum
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")
コード例 #18
0
ファイル: user.py プロジェクト: hibozzy/mediatum
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")
コード例 #19
0
ファイル: usergroup.py プロジェクト: agromsl/mediatum
def view(req):
    groups = list(loadGroupsFromDB())
    order = getSortCol(req)
    actfilter = getFilter(req)

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

    pages = Overview(req, groups)

    # sorting
    if order != "":
        if int(order[0:1]) == 0:
            groups.sort(lambda x, y: cmp(x.getName().lower(), y.getName().lower()))
        elif int(order[0:1]) == 1:
            groups.sort(lambda x, y: cmp(getNumUsers(x.getName()), getNumUsers(y.getName())))
        elif int(order[0:1]) == 2:
            gl = {}
            for g in groups:
                gl[g.id] = g.getSchemas()
            groups.sort(lambda x, y: cmp(len(gl[x.id]), len(gl[y.id])))
        elif int(order[0:1]) == 3:
            groups.sort(lambda x, y: cmp(x.getHideEdit() == "", y.getHideEdit() == ""))

        if int(order[1:]) == 1:
            groups.reverse()
    # else:
    #    groups.sort(lambda x, y: cmp(x.getName().lower(),y.getName().lower()))

    v = getAdminStdVars(req)
    v["sortcol"] = pages.OrderColHeader([t(lang(req), "admin_usergroup_col_1"), t(lang(req), "admin_usergroup_col_2"), t(
        lang(req), "admin_usergroup_col_3"), t(lang(req), "admin_usergroup_col_4")])
    v["options"] = list(groupoption)
    v["groups"] = groups
    v["pages"] = pages
    v["actfilter"] = actfilter
    return req.getTAL("/web/admin/modules/usergroup.html", v, macro="view")
コード例 #20
0
ファイル: metatype.py プロジェクト: hibozzy/mediatum
def MetatypeDetail(req, id, err=0):
    v = getAdminStdVars(req)

    if err == 0 and id == "":
        # new metadatatype
        metadatatype = tree.Node("", type="metadatatype")
        v["original_name"] = ""

    elif id != "" and err == 0:
        # edit metadatatype
        metadatatype = getMetaType(id)
        v["original_name"] = metadatatype.getName()

    else:
        # error
        metadatatype = tree.Node(req.params["mname"], type="metadatatype")
        metadatatype.setDescription(req.params["description"])
        metadatatype.setLongName(req.params["mlongname"])
        metadatatype.setActive("mactive" in req.params)
        metadatatype.setDatatypeString(req.params.get("mdatatypes", "").replace(";", ", "))
        metadatatype.set("bibtexmapping", req.params.get("mbibtex", ""))
        metadatatype.set("citeprocmapping", req.params.get("mciteproc", ""))

        v["original_name"] = req.params["mname_orig"]

    v["datatypes"] = loadNonSystemTypes()
    v["datatypes"].sort(lambda x, y: cmp(t(lang(req), x.getLongName()), t(lang(req), y.getLongName())))
    v["metadatatype"] = metadatatype
    v["error"] = err
    v["bibtextypes"] = getAllBibTeXTypes()
    v["bibtexselected"] = metadatatype.get("bibtexmapping").split(";")
    v["citeproctypes"] = citeproc.TYPES
    v["citeprocselected"] = metadatatype.get("citeprocmapping").split(";")

    rule = metadatatype.getAccess("read")
    if rule:
        rule = rule.split(",")
    else:
        rule = []

    rights = removeEmptyStrings(rule)
    v["acl"] = makeList(req, "read", rights, {}, overload=0, type="read")
    v["filtertype"] = req.params.get("filtertype", "")
    v["actpage"] = req.params.get("actpage")
    return req.getTAL("web/admin/modules/metatype.html", v, macro="modify_type")
コード例 #21
0
ファイル: metatype.py プロジェクト: mediatum/mediatum
def MetatypeDetail(req, id, err=0):
    v = getAdminStdVars(req)

    if err == 0 and id == "":
        # new metadatatype
        metadatatype = Metadatatype(u"")
        db.session.commit()
        v["original_name"] = ""

    elif id != "" and err == 0:
        # edit metadatatype
        metadatatype = getMetaType(id)
        v["original_name"] = metadatatype.getName()

    else:
        # error
        metadatatype = Metadatatype(req.params["mname"])
        metadatatype.set("description", req.params["description"])
        metadatatype.set("longname", req.params["mlongname"])
        metadatatype.set("active", "mactive" in req.params)
        metadatatype.set("datatypes", req.params.get("mdatatypes", "").replace(";", ", "))
        metadatatype.set("bibtexmapping", req.params.get("mbibtex", ""))
        metadatatype.set("citeprocmapping", req.params.get("mciteproc", ""))
        db.session.commit()
        v["original_name"] = req.params["mname_orig"]
    d = Data()
    v["datatypes"] = d.get_all_datatypes()
    v["datatypes"].sort(lambda x, y: cmp(t(lang(req), x.__name__), t(lang(req), y.__name__)))
    v["metadatatype"] = metadatatype
    v["error"] = err
    v["bibtextypes"] = getAllBibTeXTypes()
    v["bibtexselected"] = metadatatype.get("bibtexmapping").split(";")
    v["citeproctypes"] = citeproc.TYPES
    v["citeprocselected"] = metadatatype.get("citeprocmapping").split(";")

    try:
        rules = [r.ruleset_name for r in metadatatype.access_ruleset_assocs.filter_by(ruletype=u'read')]
    except:
        rules = []

    v["acl"] = makeList(req, "read", removeEmptyStrings(rules), {}, overload=0, type="read")
    v["filtertype"] = req.params.get("filtertype", "")
    v["actpage"] = req.params.get("actpage")
    v["csrf"] = req.csrf_token.current_token
    return req.getTAL("web/admin/modules/metatype.html", v, macro="modify_type")
コード例 #22
0
def MaskDetails(req, pid, id, err=0):
    mtype = getMetaType(pid)

    if err == 0 and id == "":
        # new mask
        mask = Mask(u"")
        db.session.commit()
    elif id != "" and err == 0:
        # edit mask
        if id.isdigit():
            mask = q(Mask).get(id)
            db.session.commit()
        else:
            mask = mtype.getMask(id)

    else:
        # error filling values
        mask = Mask(req.params.get("mname", ""))
        mask.setDescription(req.params.get("mdescription", ""))
        mask.setMasktype(req.params.get("mtype"))
        mask.setLanguage(req.params.get("mlanguage", ""))
        mask.setDefaultMask(req.params.get("mdefault", False))
        db.session.commit()

    v = getAdminStdVars(req)
    v["mask"] = mask
    v["mappings"] = getMappings()
    v["mtype"] = mtype
    v["error"] = err
    v["pid"] = pid
    v["masktypes"] = getMaskTypes()
    v["id"] = id
    v["langs"] = config.languages
    v["actpage"] = req.params.get("actpage")

    try:
        rules = [r.ruleset_name for r in mask.access_ruleset_assocs.filter_by(ruletype=u'read')]
    except:
        rules = []

    v["acl"] = makeList(req, "read", removeEmptyStrings(rules), {}, overload=0, type=u"read")
    v["csrf"] = req.csrf_token.current_token

    return req.getTAL("web/admin/modules/metatype_mask.html", v, macro="modify_mask")
コード例 #23
0
ファイル: usergroup.py プロジェクト: agromsl/mediatum
def editGroup_mask(req, id, err=0):
    """edit/create usergroup"""
    newusergroup = 0
    if err == 0 and id == "":
        # new usergroup
        group = tree.Node("", type="usergroup")
        newusergroup = 1
    elif id != "":
        # edit usergroup
        group = getGroup(id)

    else:
        # error while filling values
        option = ""
        for key in req.params.keys():
            if key.startswith("option_"):
                option += key[7]

        group = tree.Node("", type="usergroup")
        group.setName(req.params.get("groupname", ""))
        group.setDescription(req.params.get("description", ""))
        group.setHideEdit(req.params.get("leftmodule", "").split(';'))

        group.setOption(option)

    v = getAdminStdVars(req)
    v["error"] = err
    v["group"] = group
    v["groupoption"] = groupoption
    v["modulenames"] = getEditModuleNames()
    v["val_left"] = buildRawModuleLeft(group, lang(req))
    v["val_right"] = buildRawModuleRight(group, lang(req))
    v["valmeta_left"] = buildRawModuleMetaLeft(group)
    v["valmeta_right"] = buildRawModuleMetaRight(group)
    v["emails"] = ', '.join([u.get('email') for u in group.getChildren()])
    v["actpage"] = req.params.get("actpage")
    v["newusergroup"] = newusergroup

    v["allow_dynamic_users"] = ALLOW_DYNAMIC_USERS  # global flag
    v["allow_dynamic"] = group.get("allow_dynamic")  # for checkbox
    v["dynamic_users"] = group.get("dynamic_users")

    return req.getTAL("/web/admin/modules/usergroup.html", v, macro="modify")
コード例 #24
0
def MaskDetails(req, pid, id, err=0):
    mtype = getMetaType(pid)

    if err == 0 and id == "":
        # new mask
        mask = tree.Node("", type="mask")

    elif id != "" and err == 0:
        # edit mask
        if id.isdigit():
            mask = tree.getNode(id)
        else:
            mask = mtype.getMask(id)

    else:
        # error filling values
        mask = tree.Node(req.params.get("mname", ""), type="mask")
        mask.setDescription(req.params.get("mdescription", ""))
        mask.setMasktype(req.params.get("mtype"))
        mask.setLanguage(req.params.get("mlanguage", ""))
        mask.setDefaultMask(req.params.get("mdefault", False))

    v = getAdminStdVars(req)
    v["mask"] = mask
    v["mappings"] = getMappings()
    v["mtype"] = mtype
    v["error"] = err
    v["pid"] = pid
    v["masktypes"] = getMaskTypes()
    v["id"] = id
    v["langs"] = config.get("i18n.languages").split(",")
    v["actpage"] = req.params.get("actpage")

    rule = mask.getAccess("read")
    if rule:
        rule = rule.split(",")
    else:
        rule = []

    rights = removeEmptyStrings(rule)
    v["acl"] = makeList(req, "read", rights, {}, overload=0, type="read")

    return req.getTAL("web/admin/modules/metatype_mask.html", v, macro="modify_mask")
コード例 #25
0
ファイル: acls.py プロジェクト: agromsl/mediatum
def editRule_mask(req, id, err=0):

    if err == 0 and id == "":
        # new rule
        rule = AccessRule("", "( true )", "")

    elif id != "" and err == 0:
        # edit rule
        rule = acl.getRule(id)

    else:
        # error
        rule = AccessRule(req.params["rulename"], req.params["rule"], req.params["description"])

    v = getAdminStdVars(req)
    v["error"] = err
    v["rule"] = rule
    v["actpage"] = req.params.get("actpage")
    return req.getTAL("web/admin/modules/acls.html", v, macro="modify")
コード例 #26
0
def editGroup_mask(req, id, err=0):
    """edit/create usergroup"""
    newusergroup = 0
    if err == 0 and id == "":
        # new usergroup
        group = tree.Node("", type="usergroup")
        newusergroup = 1
    elif id != "":
        # edit usergroup
        group = getGroup(id)

    else:
        # error while filling values
        option = ""
        for key in req.params.keys():
            if key.startswith("option_"):
                option += key[7]

        group = tree.Node("", type="usergroup")
        group.setName(req.params.get("groupname", ""))
        group.setDescription(req.params.get("description", ""))
        group.setHideEdit(req.params.get("leftmodule", "").split(';'))

        group.setOption(option)

    v = getAdminStdVars(req)
    v["error"] = err
    v["group"] = group
    v["groupoption"] = groupoption
    v["modulenames"] = getEditModuleNames()
    v["val_left"] = buildRawModuleLeft(group, lang(req))
    v["val_right"] = buildRawModuleRight(group, lang(req))
    v["valmeta_left"] = buildRawModuleMetaLeft(group)
    v["valmeta_right"] = buildRawModuleMetaRight(group)
    v["emails"] = ', '.join([u.get('email') for u in group.getChildren()])
    v["actpage"] = req.params.get("actpage")
    v["newusergroup"] = newusergroup

    v["allow_dynamic_users"] = ALLOW_DYNAMIC_USERS  # global flag
    v["allow_dynamic"] = group.get("allow_dynamic")  # for checkbox
    v["dynamic_users"] = group.get("dynamic_users")

    return req.getTAL("/web/admin/modules/usergroup.html", v, macro="modify")
コード例 #27
0
ファイル: workflows.py プロジェクト: hibozzy/mediatum
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")
コード例 #28
0
ファイル: acls.py プロジェクト: hibozzy/mediatum
def editRule_mask(req, id, err=0):

    if err == 0 and id == "":
        # new rule
        rule = AccessRule("", "( true )", "")

    elif id != "" and err == 0:
        # edit rule
        rule = acl.getRule(id)

    else:
        # error
        rule = AccessRule(req.params["rulename"], req.params["rule"],
                          req.params["description"])

    v = getAdminStdVars(req)
    v["error"] = err
    v["rule"] = rule
    v["actpage"] = req.params.get("actpage")
    return req.getTAL("web/admin/modules/acls.html", v, macro="modify")
コード例 #29
0
ファイル: workflows.py プロジェクト: agromsl/mediatum
def view(req):
    workflows = list(getWorkflowList())
    order = getSortCol(req)
    actfilter = getFilter(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])')
            workflows = filter(lambda x: num.match(x.getName()), workflows)
        elif actfilter == "else" or actfilter == t(lang(req), "admin_filter_else"):
            all = re.compile(r'([a-z]|[A-Z]|[0-9])')
            workflows = filter(lambda x: not all.match(x.getName()), workflows)
        else:
            workflows = filter(lambda x: x.getName().lower().startswith(actfilter), workflows)

    pages = Overview(req, workflows)

    # sorting
    if order != "":
        if int(order[0:1]) == 1:
            workflows.sort(lambda x, y: cmp(x.getName(), y.getName()))
        elif int(order[0:1]) == 2:
            workflows.sort(lambda x, y: cmp(x.getDescription(), y.getDescription()))
        elif int(order[0:1]) == 3:
            workflows.sort(lambda x, y: cmp(x.getAccess("read"), y.getAccess("read")))
        elif int(order[0:1]) == 4:
            workflows.sort(lambda x, y: cmp(x.getAccess("write"), y.getAccess("write")))
        if int(order[1:]) == 1:
            workflows.reverse()

    v = getAdminStdVars(req)
    v["sortcol"] = pages.OrderColHeader(
        [t(lang(req), "admin_wf_col_1"), t(lang(req), "admin_wf_col_2"), t(lang(req), "admin_wf_col_3"), t(lang(req), "admin_wf_col_4")])
    v["workflows"] = workflows
    v["pages"] = pages
    v["actfilter"] = actfilter

    return req.getTAL("web/admin/modules/workflows.html", v, macro="view")
コード例 #30
0
ファイル: acls.py プロジェクト: agromsl/mediatum
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")
コード例 #31
0
ファイル: mapping.py プロジェクト: hibozzy/mediatum
def editMappingField_mask(req, id, parent, err=0):
    if err == 0 and id == "":
        # new mapping field
        field = tree.Node("", type="mappingfield")
    elif id != "":
        # edit mapping field
        field = tree.getNode(id)
    else:
        # error while filling values
        field = tree.Node("", type="mappingfield")
        field.setName(req.params.get("name", ""))
        field.setDescription(req.params.get("description", ""))
        field.setExportFormat(req.params.get("exportformat", ""))
        if "mandatory" in req.params.keys():
            field.setMandatory("True")

    v = getAdminStdVars(req)
    v["error"] = err
    v["field"] = field
    v["parent"] = parent
    v["actpage"] = req.params.get("actpage")
    return req.getTAL("web/admin/modules/mapping.html", v, macro="modifyfield")
コード例 #32
0
ファイル: mapping.py プロジェクト: agromsl/mediatum
def editMappingField_mask(req, id, parent, err=0):
    if err == 0 and id == "":
        # new mapping field
        field = tree.Node("", type="mappingfield")
    elif id != "":
        # edit mapping field
        field = tree.getNode(id)
    else:
        # error while filling values
        field = tree.Node("", type="mappingfield")
        field.setName(req.params.get("name", ""))
        field.setDescription(req.params.get("description", ""))
        field.setExportFormat(req.params.get("exportformat", ""))
        if "mandatory" in req.params.keys():
            field.setMandatory("True")

    v = getAdminStdVars(req)
    v["error"] = err
    v["field"] = field
    v["parent"] = parent
    v["actpage"] = req.params.get("actpage")
    return req.getTAL("web/admin/modules/mapping.html", v, macro="modifyfield")
コード例 #33
0
ファイル: workflows.py プロジェクト: mediatum/mediatum
def WorkflowDetail(req, id, err=0):
    v = getAdminStdVars(req)
    if err == 0 and id == "":
        # new workflow
        workflow = Workflow(u"")
        db.session.commit()
        v["original_name"] = ""

    elif id != "" and err == 0:
        # edit workflow
        workflow = getWorkflow(id)
        v["original_name"] = workflow.name

    else:
        # error
        workflow = Workflow(u"")
        workflow.name = req.params.get("name", "")
        workflow.set("description", 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")
        db.session.commit()

    try:
        rule = {"read": [r.ruleset_name for r in workflow.access_ruleset_assocs.filter_by(ruletype='read')],
                "write": [r.ruleset_name for r in workflow.access_ruleset_assocs.filter_by(ruletype='write')]}
    except:
        rule = {"read": [], "write": []}

    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.languages
    v["error"] = err
    v["actpage"] = req.params.get("actpage")
    v["csrf"] = req.csrf_token.current_token
    return req.getTAL("web/admin/modules/workflows.html", v, macro="modify")
コード例 #34
0
ファイル: metatype.py プロジェクト: schnittstabil/mediatum
def view(req):
    mtypes = q(Metadatatypes).one().children.order_by("name").all()
    actfilter = getFilter(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])')
            if req.params.get("filtertype", "") == "id":
                mtypes = filter(lambda x: num.match(x.name), mtypes)
            else:
                mtypes = filter(lambda x: num.match(x.getLongName()), mtypes)
        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", "") == "id":
                mtypes = filter(lambda x: not all.match(x.name), mtypes)
            else:
                mtypes = filter(lambda x: not all.match(x.getLongName()),
                                mtypes)
        else:
            if req.params.get("filtertype", "") == "id":
                mtypes = filter(lambda x: x.name.lower().startswith(actfilter),
                                mtypes)
            else:
                mtypes = filter(
                    lambda x: x.getLongName().lower().startswith(actfilter),
                    mtypes)

    pages = Overview(req, mtypes)
    order = getSortCol(req)

    # sorting
    if order != "":
        if int(order[0:1]) == 0:
            mtypes.sort(lambda x, y: cmp(x.name.lower(), y.name.lower()))
        elif int(order[0:1]) == 1:
            mtypes.sort(lambda x, y: cmp(x.getLongName().lower(),
                                         y.getLongName().lower()))
        elif int(order[0:1]) == 2:
            mtypes.sort(lambda x, y: cmp(x.getDescription().lower(),
                                         y.getDescription().lower()))
        elif int(order[0:1]) == 3:
            mtypes.sort(lambda x, y: cmp(x.getActive(), y.getActive()))
        elif int(order[0:1]) == 4:
            mtypes.sort(lambda x, y: cmp(x.getDatatypeString().lower(),
                                         y.getDatatypeString().lower()))
        if int(order[1:]) == 1:
            mtypes.reverse()
    else:
        mtypes.sort(lambda x, y: cmp(x.name.lower(), y.name.lower()))

    v = getAdminStdVars(req)
    v["sortcol"] = pages.OrderColHeader([
        t(lang(req), "admin_meta_col_1"),
        t(lang(req), "admin_meta_col_2"),
        t(lang(req), "admin_meta_col_3"),
        t(lang(req), "admin_meta_col_4"),
        t(lang(req), "admin_meta_col_5"),
        t(lang(req), "admin_meta_col_6")
    ])
    v["metadatatypes"] = mtypes
    v["get_classname_for_typestring"] = Node.get_classname_for_typestring
    v['dtypes'] = Node.__mapper__.polymorphic_map  # is used to prevent missing plugins from causing error
    v["pages"] = pages
    v["actfilter"] = actfilter
    v["filterattrs"] = [("id", "admin_metatype_filter_id"),
                        ("name", "admin_metatype_filter_name")]
    v["filterarg"] = req.params.get("filtertype", "id")
    v["csrf"] = req.csrf_token.current_token
    return req.getTAL("web/admin/modules/metatype.html", v, macro="view_type")
コード例 #35
0
ファイル: metatype_field.py プロジェクト: agromsl/mediatum
def FieldDetail(req, pid, id, err=0):
    _option = ""
    for key in req.params.keys():
        if key.startswith("option_"):
            _option += key[7]

    if err == 0 and id == "":
        # new field
        field = tree.Node("", type="metafield")

    elif id != "":
        # edit field
        field = getMetaField(pid, id)

    else:
        # error filling values
        _fieldvalue = ""
        if req.params.get('mtype', '') + "_value" in req.params.keys():
            _fieldvalue = str(req.params[req.params.get('mtype', '') + "_value"])

        if (req.params.get("mname") == ""):
            field = tree.Node(req.params.get("orig_name"), type="metafield")
        else:
            field = tree.Node(req.params.get("mname"), type="metafield")
        field.setLabel(req.params.get("mlabel"))
        field.setOrderPos(req.params.get("orderpos"))
        field.setFieldtype(req.params.get("mtype"))
        field.setOption(_option)
        field.setValues(_fieldvalue)
        field.setDescription(req.params.get("mdescription"))

    attr = {}
    metadatatype = getMetaType(pid)
    for t in metadatatype.getDatatypes():
        node = tree.Node(type=t)
        try:
            attr.update(node.getTechnAttributes())
        except AttributeError:
            continue

    metafields = {}
    for fields in getFieldsForMeta(pid):
        if fields.getType() != "union":
            metafields[fields.getName()] = fields

    v = getAdminStdVars(req)
    v["metadatatype"] = metadatatype
    v["metafield"] = field
    v["error"] = err
    v["fieldtypes"] = getMetaFieldTypeNames()
    v["dateoptions"] = dateoption
    v["datatypes"] = attr
    v["requiredoptions"] = requiredoption
    v["fieldoptions"] = fieldoption
    v["metafields"] = metafields
    v["filtertype"] = req.params.get("filtertype", "")
    v["actpage"] = req.params.get("actpage")

    v["icons"] = {"externer Link": "/img/extlink.png", "Email": "/img/email.png"}
    v["url_targets"] = {"selbes Fenster": "same", "neues Fenster": "_blank"}
    v["valuelist"] = ("", "", "", "")
    if field.getFieldtype() == "url":
        v["valuelist"] = field.getValueList()
        while len(v["valuelist"]) != 4:
            v["valuelist"].append("")
    else:
        v["valuelist"] = field.getValueList()

    v["field"] = None
    if field.id:
        v["field"] = field

    v["adminfields"] = []
    for t in getMetaFieldTypeNames():
        f = getMetadataType(t)

        if 'attr_dict' in inspect.getargspec(f.getMaskEditorHTML).args:
            attr_dict = dict(field.items())
            v["adminfields"] .append(f.getMaskEditorHTML(v["field"], metadatatype=metadatatype, language=lang(req), attr_dict=attr_dict))
        else:
            v["adminfields"] .append(f.getMaskEditorHTML(v["field"], metadatatype=metadatatype, language=lang(req)))

    return req.getTAL("web/admin/modules/metatype_field.html", v, macro="modify_field")
コード例 #36
0
ファイル: mapping.py プロジェクト: agromsl/mediatum
def view(req):
    mappings = list(getMappings())
    order = getSortCol(req)
    actfilter = getFilter(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])')
            mappings = filter(lambda x: num.match(x.getName()), mappings)

        elif actfilter == "else" or actfilter == t(lang(req), "admin_filter_else"):
            all = re.compile(r'([a-z]|[A-Z]|[0-9])')
            mappings = filter(lambda x: not all.match(x.getName()), mappings)

        else:
            mappings = filter(lambda x: x.getName().lower().startswith(actfilter), mappings)

    pages = Overview(req, mappings)

    # sorting
    if order != "":
        if int(order[0:1]) == 0:
            mappings.sort(lambda x, y: cmp(x.getName().lower(), y.getName().lower()))
        elif int(order[0:1]) == 1:
            mappings.sort(lambda x, y: cmp(x.getNamespace().lower(), y.getNamespace().lower()))
        elif int(order[0:1]) == 2:
            mappings.sort(lambda x, y: cmp(x.getNamespaceUrl().lower(), y.getNamespaceUrl().lower()))
        elif int(order[0:1]) == 3:
            mappings.sort(lambda x, y: cmp(x.getDescription().lower(), y.getDescription().lower()))
        elif int(order[0:1]) == 4:
            mappings.sort(lambda x, y: cmp(len(x.getFields()), len(y.getFields())))
        elif int(order[0:1]) == 5:
            mappings.sort(lambda x, y: cmp(x.getMappingType(), y.getMappingType()))
        elif int(order[0:1]) == 6:
            mappings.sort(lambda x, y: cmp(x.getActive(), y.getActive()))

        if int(order[1:]) == 1:
            mappings.reverse()
    else:
        mappings.sort(lambda x, y: cmp(x.getName().lower(), y.getName().lower()))

    v = getAdminStdVars(req)
    v["sortcol"] = pages.OrderColHeader(
        [
            t(
                lang(req), "admin_mapping_col_1"), t(
                lang(req), "admin_mapping_col_2"), t(
                    lang(req), "admin_mapping_col_3"), t(
                        lang(req), "admin_mapping_col_4"), t(
                            lang(req), "admin_mapping_col_5"), t(
                                lang(req), "admin_mapping_col_6"), t(
                                    lang(req), "admin_mapping_col_7")])
    v["mappings"] = mappings
    v["options"] = []
    v["pages"] = pages
    v["actfilter"] = actfilter
    v["mappingtypes"] = "\n".join(getMappingTypes())
    return req.getTAL("web/admin/modules/mapping.html", v, macro="view")
コード例 #37
0
ファイル: metatype.py プロジェクト: hibozzy/mediatum
def view(req):
    mtypes = loadTypesFromDB()
    actfilter = getFilter(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])')
            if req.params.get("filtertype", "") == "id":
                mtypes = filter(lambda x: num.match(x.getName()), mtypes)
            else:
                mtypes = filter(lambda x: num.match(x.getLongName()), mtypes)
        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", "") == "id":
                mtypes = filter(lambda x: not all.match(x.getName()), mtypes)
            else:
                mtypes = filter(lambda x: not all.match(x.getLongName()), mtypes)
        else:
            if req.params.get("filtertype", "") == "id":
                mtypes = filter(lambda x: x.getName().lower().startswith(actfilter), mtypes)
            else:
                mtypes = filter(lambda x: x.getLongName().lower().startswith(actfilter), mtypes)

    pages = Overview(req, mtypes)
    order = getSortCol(req)

    # sorting
    if order != "":
        if int(order[0:1]) == 0:
            mtypes.sort(lambda x, y: cmp(x.getName().lower(), y.getName().lower()))
        elif int(order[0:1]) == 1:
            mtypes.sort(lambda x, y: cmp(x.getLongName().lower(), y.getLongName().lower()))
        elif int(order[0:1]) == 2:
            mtypes.sort(lambda x, y: cmp(x.getDescription().lower(), y.getDescription().lower()))
        elif int(order[0:1]) == 3:
            mtypes.sort(lambda x, y: cmp(x.getActive(), y.getActive()))
        elif int(order[0:1]) == 4:
            mtypes.sort(lambda x, y: cmp(x.getDatatypeString().lower(), y.getDatatypeString().lower()))
        elif int(order[0:1]) == 5:
            mtypes.sort(lambda x, y: cmp(x.metadatatype.getAccess("read"), y.metadatatype.getAccess("read")))
        elif int(order[0:1]) == 6:
            mtypes.sort(lambda x, y: cmp(x.searchIndexCorrupt(), y.searchIndexCorrupt()))
        elif int(order[0:1]) == 7:
            mtypes.sort(lambda x, y: cmp(len(x.getAllItems()), len(y.getAllItems())))
        if int(order[1:]) == 1:
            mtypes.reverse()
    else:
        mtypes.sort(lambda x, y: cmp(x.getName().lower(), y.getName().lower()))

    v = getAdminStdVars(req)
    v["sortcol"] = pages.OrderColHeader(
        [
            t(
                lang(req), "admin_meta_col_1"), t(
                lang(req), "admin_meta_col_2"), t(
                    lang(req), "admin_meta_col_3"), t(
                        lang(req), "admin_meta_col_4"), t(
                            lang(req), "admin_meta_col_5"), t(
                                lang(req), "admin_meta_col_6")])
    v["metadatatypes"] = mtypes
    v["datatypes"] = loadAllDatatypes()
    v["datatypes"].sort(lambda x, y: cmp(t(lang(req), x.getLongName()), t(lang(req), y.getLongName())))
    v["pages"] = pages
    v["actfilter"] = actfilter
    v["filterattrs"] = [("id", "admin_metatype_filter_id"), ("name", "admin_metatype_filter_name")]
    v["filterarg"] = req.params.get("filtertype", "id")
    return req.getTAL("web/admin/modules/metatype.html", v, macro="view_type")
コード例 #38
0
def showDetailList(req, id):
    metadatatype = getMetaType(id)
    metafields = metadatatype.getMetaFields()

    order = getSortCol(req)
    actfilter = getFilter(req)

    # resets filter to all if adding mask in /metatype view
    # if req.params.get('acttype') == 'mask' or req.params.get('acttype') == 'schema':
    #     if req.path == '/metatype' and 'filterbutton' not in req.params:
    #         actfilter = '*'

    # resets filter when going to a new view
    if 'filterbutton' not in req.params:
        actfilter = '*'

    # 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])')
            if req.params.get("filtertype", "") == "name":
                metafields = filter(lambda x: num.match(x.getName()), metafields)
            else:
                metafields = filter(lambda x: num.match(x.getLabel()), metafields)

        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", "") == "name":
                metafields = filter(lambda x: not all.match(x.getName()), metafields)
            else:
                metafields = filter(lambda x: not all.match(x.getLabel()), metafields)
        else:
            if req.params.get("filtertype", "") == "name":
                metafields = filter(lambda x: x.getName().lower().startswith(actfilter), metafields)
            else:
                metafields = filter(lambda x: x.getLabel().lower().startswith(actfilter), metafields)

    pages = Overview(req, metafields)

    # sorting
    if order != "":
        if int(order[0:1]) == 0:
            metafields.sort(lambda x, y: cmp(x.orderpos, y.orderpos))
        elif int(order[0:1]) == 1:
            metafields.sort(lambda x, y: cmp(x.getName().lower(), y.getName().lower()))
        elif int(order[0:1]) == 2:
            metafields.sort(lambda x, y: cmp(x.getLabel().lower(), y.getLabel().lower()))
        elif int(order[0:1]) == 3:
            metafields.sort(
                lambda x, y: cmp(getMetaFieldTypeNames()[ustr(x.getFieldtype())], getMetaFieldTypeNames()[ustr(y.getFieldtype())]))
        if int(order[1:]) == 1:
            metafields.reverse()
    else:
        metafields.sort(lambda x, y: cmp(x.orderpos, y.orderpos))

    v = getAdminStdVars(req)
    v["filterattrs"] = [("name", "admin_metafield_filter_name"), ("label", "admin_metafield_filter_label")]
    v["filterarg"] = req.params.get("filtertype", "name")

    v["sortcol"] = pages.OrderColHeader(
        ["", t(lang(req), "admin_metafield_col_1"), t(lang(req), "admin_metafield_col_2"), t(lang(req), "admin_metafield_col_3")])
    v["metadatatype"] = metadatatype
    v["metafields"] = metafields
    v["fieldoptions"] = fieldoption
    v["fieldtypes"] = getMetaFieldTypeNames()
    v["pages"] = pages
    v["order"] = order
    v["actfilter"] = actfilter

    v["actpage"] = req.params.get("actpage")
    if ustr(req.params.get("page", "")).isdigit():
        v["actpage"] = req.params.get("page")

    return req.getTAL("web/admin/modules/metatype_field.html", v, macro="view_field")
コード例 #39
0
def FieldDetail(req, pid, id, err=0):
    _option = ""
    for key in req.params.keys():
        if key.startswith("option_"):
            _option += key[7]

    if err == 0 and id == "":
        # new field
        field = Metafield(u"")
        db.session.commit()

    elif id != "":
        # edit field
        field = q(Metadatatype).get(pid).children.filter_by(name=id, type=u'metafield').scalar()

    else:
        # error filling values
        _fieldvalue = ""
        if req.params.get('mtype', '') + "_value" in req.params.keys():
            _fieldvalue = ustr(req.params[req.params.get('mtype', '') + "_value"])

        if (req.params.get("mname") == ""):
            field = Metafield(req.params.get("orig_name"))
        else:
            field = Metafield(req.params.get("mname"))
        field.setLabel(req.params.get("mlabel"))
        field.setOrderPos(req.params.get("orderpos"))
        field.setFieldtype(req.params.get("mtype"))
        field.setOption(_option)
        field.setValues(_fieldvalue)
        field.setDescription(req.params.get("mdescription"))
        db.session.commit()

    attr = {}
    metadatatype = getMetaType(pid)
    for t in metadatatype.getDatatypes():
        content_class = Node.get_class_for_typestring(t)
        node = content_class(name=u'')
        try:
            attr.update(node.getTechnAttributes())
        except AttributeError:
            logg.exception("attribute error in FieldDetail, continue")
            continue

    metafields = {}
    for fields in getFieldsForMeta(pid):
        if fields.getType() != "union":
            metafields[fields.name] = fields

    v = getAdminStdVars(req)
    v["metadatatype"] = metadatatype
    v["metafield"] = field
    v["error"] = err
    v["fieldtypes"] = getMetaFieldTypeNames()
    v["dateoptions"] = dateoption
    v["datatypes"] = attr
    v["requiredoptions"] = requiredoption
    v["fieldoptions"] = fieldoption
    v["metafields"] = metafields
    v["filtertype"] = req.params.get("filtertype", "")
    v["actpage"] = req.params.get("actpage")

    v["icons"] = {"externer Link": "/img/extlink.png", "Email": "/img/email.png"}
    v["url_targets"] = {"selbes Fenster": "same", "neues Fenster": "_blank"}
    v["valuelist"] = ("", "", "", "")
    if field.getFieldtype() == "url":
        v["valuelist"] = field.getValueList()
        while len(v["valuelist"]) != 4:
            v["valuelist"].append("")
    else:
        v["valuelist"] = field.getValueList()

    v["field"] = None
    if field.id:
        v["field"] = field

    v["adminfields"] = []
    for t in getMetaFieldTypeNames():
        f = getMetadataType(t)

        if 'attr_dict' in inspect.getargspec(f.getMaskEditorHTML).args:
            attr_dict = dict(field.attrs.items())
            v["adminfields"] .append(f.getMaskEditorHTML(v["field"], metadatatype=metadatatype, language=lang(req), attr_dict=attr_dict))
        else:
            v["adminfields"] .append(f.getMaskEditorHTML(v["field"], metadatatype=metadatatype, language=lang(req)))
    db.session.commit()
    return req.getTAL("web/admin/modules/metatype_field.html", v, macro="modify_field")
コード例 #40
0
ファイル: metatype_field.py プロジェクト: agromsl/mediatum
def showDetailList(req, id):
    metadatatype = getMetaType(id)
    metafields = metadatatype.getMetaFields()

    order = getSortCol(req)
    actfilter = getFilter(req)

    # resets filter to all if adding mask in /metatype view
    # if req.params.get('acttype') == 'mask' or req.params.get('acttype') == 'schema':
    #     if req.path == '/metatype' and 'filterbutton' not in req.params:
    #         actfilter = '*'

    # resets filter when going to a new view
    if 'filterbutton' not in req.params:
        actfilter = '*'

    # 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])')
            if req.params.get("filtertype", "") == "name":
                metafields = filter(lambda x: num.match(x.getName()), metafields)
            else:
                metafields = filter(lambda x: num.match(x.getLabel()), metafields)

        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", "") == "name":
                metafields = filter(lambda x: not all.match(x.getName()), metafields)
            else:
                metafields = filter(lambda x: not all.match(x.getLabel()), metafields)
        else:
            if req.params.get("filtertype", "") == "name":
                metafields = filter(lambda x: x.getName().lower().startswith(actfilter), metafields)
            else:
                metafields = filter(lambda x: x.getLabel().lower().startswith(actfilter), metafields)

    pages = Overview(req, metafields)

    # sorting
    if order != "":
        if int(order[0:1]) == 0:
            metafields.sort(lambda x, y: cmp(x.getOrderPos(), y.getOrderPos()))
        elif int(order[0:1]) == 1:
            metafields.sort(lambda x, y: cmp(x.getName().lower(), y.getName().lower()))
        elif int(order[0:1]) == 2:
            metafields.sort(lambda x, y: cmp(x.getLabel().lower(), y.getLabel().lower()))
        elif int(order[0:1]) == 3:
            metafields.sort(
                lambda x, y: cmp(getMetaFieldTypeNames()[str(x.getFieldtype())], getMetaFieldTypeNames()[str(y.getFieldtype())]))
        if int(order[1:]) == 1:
            metafields.reverse()
    else:
        metafields.sort(lambda x, y: cmp(x.getOrderPos(), y.getOrderPos()))

    v = getAdminStdVars(req)
    v["filterattrs"] = [("name", "admin_metafield_filter_name"), ("label", "admin_metafield_filter_label")]
    v["filterarg"] = req.params.get("filtertype", "name")

    v["sortcol"] = pages.OrderColHeader(
        ["", t(lang(req), "admin_metafield_col_1"), t(lang(req), "admin_metafield_col_2"), t(lang(req), "admin_metafield_col_3")])
    v["metadatatype"] = metadatatype
    v["metafields"] = metafields
    v["fieldoptions"] = fieldoption
    v["fieldtypes"] = getMetaFieldTypeNames()
    v["pages"] = pages
    v["order"] = order
    v["actfilter"] = actfilter

    v["actpage"] = req.params.get("actpage")
    if str(req.params.get("page", "")).isdigit():
        v["actpage"] = req.params.get("page")

    return req.getTAL("web/admin/modules/metatype_field.html", v, macro="view_field")
コード例 #41
0
def WorkflowStepDetail(req, wid, wnid, err=0):
    workflow = getWorkflow(wid)
    nodelist = workflow.getSteps()
    v = getAdminStdVars(req)

    if err == 0 and wnid == "":
        # new workflowstep
        workflowstep = createWorkflowStep(name="",
                                          trueid="",
                                          falseid="",
                                          truelabel="",
                                          falselabel="",
                                          comment="")
        v["orig_name"] = req.params.get("orig_name", "")

    elif err == -1:
        # update steptype
        if req.params.get("stepid", ""):
            workflowstep = updateWorkflowStep(
                workflow,
                oldname=req.params.get("nname", ""),
                newname=req.params.get("nname", ""),
                type=req.params.get("ntype", "workflowstep"),
                trueid=req.params.get("ntrueid", ""),
                falseid=req.params.get("nfalseid", ""),
                truelabel=req.params.get("ntruelabel", ""),
                falselabel=req.params.get("nfalselabel", ""),
                comment=req.params.get("ncomment", ""))
        else:
            err = 0
            workflowstep = createWorkflowStep(
                name=req.params.get("nname", ""),
                type=req.params.get("ntype", "workflowstep"),
                trueid=req.params.get("ntrueid", ""),
                falseid=req.params.get("nfalseid", ""),
                truelabel=req.params.get("ntruelabel", ""),
                falselabel=req.params.get("nfalselabel", ""),
                comment=req.params.get("ncomment", ""))
        v["orig_name"] = workflowstep.name

    elif wnid != "" and req.params.get("nname") != "":
        # edit field
        workflowstep = workflow.getStep(wnid)
        v["orig_name"] = workflowstep.name
    else:
        # error while filling values
        type = req.params.get("ntype", "workflowstep")
        if type == "":
            type = "workflowstep"
        workflowstep = createWorkflowStep(
            name=req.params.get("nname", ""),
            type=type,
            trueid=req.params.get("ntrueid", ""),
            falseid=req.params.get("nfalseid", ""),
            truelabel=req.params.get("ntruelabel", ""),
            falselabel=req.params.get("nfalselabel", ""),
            comment=req.params.get("ncomment", ""))
        v["orig_name"] = req.params.get("orig_name", "")

    if req.params.get("nytype", "") != "":
        workflowstep.setType(req.params.get("nytype", ""))

    v_part = {}
    v_part["fields"] = workflowstep.metaFields(lang(req)) or []
    v_part["node"] = workflowstep
    v_part["hiddenvalues"] = {"wnodeid": workflowstep.name}

    try:
        rule = {
            "read": [
                r.ruleset_name
                for r in workflowstep.access_ruleset_assocs.filter_by(
                    ruletype='read')
            ],
            "write": [
                r.ruleset_name
                for r in workflowstep.access_ruleset_assocs.filter_by(
                    ruletype='write')
            ]
        }
    except:
        rule = {"read": [], "write": []}

    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["editor"] = req.getTAL("web/admin/modules/workflows.html",
                             v_part,
                             macro="view_editor")
    v["workflow"] = workflow
    v["workflowstep"] = workflowstep
    v["nodelist"] = nodelist
    v["workflowtypes"] = getWorkflowTypes()
    v["error"] = err
    v["update_type"] = req.params.get("ntype", u"")
    v["actpage"] = req.params.get("actpage")
    return req.getTAL("web/admin/modules/workflows.html",
                      v,
                      macro="modify_step")
コード例 #42
0
ファイル: metatype_mask.py プロジェクト: agromsl/mediatum
def showMaskList(req, id):
    metadatatype = getMetaType(id)
    masks = metadatatype.getMasks()
    order = getSortCol(req)
    actfilter = getFilter(req)

    # resets filter to all if adding mask in /metatype view
    # if req.params.get('acttype') == 'mask' or req.params.get('acttype') == 'schema':
    #     if req.path == '/metatype' and 'filterbutton' not in req.params:
    #         actfilter = '*'

    # resets filter when going to a new view
    if 'filterbutton' not in req.params:
        actfilter = '*'

    # 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])')
            masks = filter(lambda x: num.match(x.getName()), masks)

        elif actfilter == "else" or actfilter == t(lang(req), "admin_filter_else"):
            all = re.compile(r'([a-z]|[A-Z]|[0-9])')
            masks = filter(lambda x: not all.match(x.getName()), masks)
        else:
            masks = filter(lambda x: x.getName().lower().startswith(actfilter), masks)

    pages = Overview(req, masks)

    defaults = {}
    for mask in masks:
        if mask.getDefaultMask():
            defaults[mask.getMasktype()] = mask.id

    # sorting
    if order != "":
        if int(order[0:1]) == 0:
            masks.sort(lambda x, y: cmp(x.getName().lower(), y.getName().lower()))
        elif int(order[0:1]) == 1:
            masks.sort(lambda x, y: cmp(x.getMasktype(), y.getMasktype()))
        elif int(order[0:1]) == 2:
            masks.sort(lambda x, y: cmp(x.getDescription(), y.getDescription()))
        elif int(order[0:1]) == 3:
            masks.sort(lambda x, y: cmp(x.getDefaultMask(), y.getDefaultMask()))
        elif int(order[0:1]) == 4:
            masks.sort(lambda x, y: cmp(x.getLanguage(), y.getLanguage()))
        if int(order[1:]) == 1:
            masks.reverse()
    else:
        masks.sort(lambda x, y: cmp(x.getOrderPos(), y.getOrderPos()))

    v = getAdminStdVars(req)
    v["filterattrs"] = []
    v["filterarg"] = req.params.get("filtertype", "name")
    v["sortcol"] = pages.OrderColHeader(
        [
            t(
                lang(req), "admin_mask_col_1"), t(
                lang(req), "admin_mask_col_2"), t(
                    lang(req), "admin_mask_col_3"), t(
                        lang(req), "admin_mask_col_4"), t(
                            lang(req), "admin_mask_col_5"), t(
                                lang(req), "admin_mask_col_6")])
    v["metadatatype"] = metadatatype
    v["masktypes"] = getMaskTypes()
    v["lang_icons"] = {"de": "/img/flag_de.gif", "en": "/img/flag_en.gif", "no": "/img/emtyDot1Pix.gif"}
    v["masks"] = masks
    v["pages"] = pages
    v["order"] = order
    v["defaults"] = defaults

    v["order"] = order
    v["actfilter"] = actfilter
    return req.getTAL("web/admin/modules/metatype_mask.html", v, macro="view_mask")
コード例 #43
0
ファイル: user.py プロジェクト: hibozzy/mediatum
def sendmailUser_mask(req, id, err=0):

    v = getAdminStdVars(req)
    v["path"] = req.path[1:]

    if id in ["execute", "execu"]:

        userid = req.params.get("userid")
        user = getUser(userid)
        if not user:
            path = req.path[1:].split("/")
            user = getExternalUser(userid, path[-1])

        password = makeRandomPassword()
        user.resetPassword(password)

        text = req.params.get("text")
        text = text.replace("[wird eingesetzt]", password)
        try:
            mail.sendmail(req.params.get("from"), req.params.get("email"),
                          req.params.get("subject"), text)
        except mail.SocketError:
            print "Socket error while sending mail"
            req.setStatus(httpstatus.HTTP_INTERNAL_SERVER_ERROR)
            return req.getTAL("web/admin/modules/user.html",
                              v,
                              macro="sendmailerror")
        return req.getTAL("web/admin/modules/user.html",
                          v,
                          macro="sendmaildone")

    user = getUser(id)
    if not user:
        path = req.path[1:].split("/")
        user = getExternalUser(id, path[-1])

    collections = []
    seen = {}
    access = acl.AccessData(user=user)
    for node in getAllCollections():
        if access.hasReadAccess(node):
            if access.hasWriteAccess(node):
                collections.append(node.name + " (lesen/schreiben)")
                seen[node.id] = None
    for node in tree.getRoot("collections").getChildren():
        if access.hasReadAccess(node) and node.id not in seen:
            collections.append(node.name + " (nur lesen)")
    x = {}
    x["name"] = "%s %s" % (user.getFirstName(), user.getLastName())
    if (x["name"] == ""):
        x["name"] = user.getName()
    x["host"] = config.get("host.name")
    x["login"] = user.getName()
    x["isEditor"] = user.isEditor()
    x["collections"] = list()
    x["groups"] = user.getGroups()
    x["groups"].sort()
    x["language"] = lang(req)
    x["collections"] = collections
    x["collections"].sort()

    v["mailtext"] = req.getTAL("web/admin/modules/user.html",
                               x,
                               macro="emailtext").strip()
    v["email"] = user.getEmail()
    v["userid"] = user.getName()
    return req.getTAL("web/admin/modules/user.html", v, macro="sendmail")
コード例 #44
0
ファイル: workflows.py プロジェクト: agromsl/mediatum
def WorkflowStepDetail(req, wid, wnid, err=0):

    workflow = getWorkflow(wid)
    nodelist = workflow.getSteps()
    v = getAdminStdVars(req)

    if err == 0 and wnid == "":
        # new workflowstep
        workflowstep = createWorkflowStep(name="", trueid="", falseid="", truelabel="", falselabel="", comment="")
        workflowstep.id = ""
        v["orig_name"] = req.params.get("orig_name", "")

    elif err == -1:
        # update steptype
        if req.params.get("stepid", ""):
            workflowstep = updateWorkflowStep(
                workflow, oldname=req.params.get(
                    "nname", ""), newname=req.params.get(
                    "nname", ""), type=req.params.get(
                    "ntype", "workflowstep"), trueid=req.params.get(
                    "ntrueid", ""), falseid=req.params.get(
                        "nfalseid", ""), truelabel=req.params.get(
                            "ntruelabel", ""), falselabel=req.params.get(
                                "nfalselabel", ""), comment=req.params.get(
                                    "ncomment", ""))
        else:
            err = 0
            workflowstep = createWorkflowStep(
                name=req.params.get(
                    "nname", ""), type=req.params.get(
                    "ntype", "workflowstep"), trueid=req.params.get(
                    "ntrueid", ""), falseid=req.params.get(
                    "nfalseid", ""), truelabel=req.params.get(
                        "ntruelabel", ""), falselabel=req.params.get(
                            "nfalselabel", ""), comment=req.params.get(
                                "ncomment", ""))
            if req.params.get("wnid", "") == "":
                workflowstep.id = ""
        v["orig_name"] = workflowstep.getName()

    elif wnid != "" and req.params.get("nname") != "":
        # edit field
        workflowstep = workflow.getStep(wnid)
        v["orig_name"] = workflowstep.getName()
    else:
        # error while filling values
        type = req.params.get("ntype", "workflowstep")
        if type == "":
            type = "workflowstep"
        workflowstep = createWorkflowStep(
            name=req.params.get(
                "nname", ""), type=type, trueid=req.params.get(
                "ntrueid", ""), falseid=req.params.get(
                "nfalseid", ""), truelabel=req.params.get(
                    "ntruelabel", ""), falselabel=req.params.get(
                        "nfalselabel", ""), comment=req.params.get(
                            "ncomment", ""))
        v["orig_name"] = req.params.get("orig_name", "")

    if req.params.get("nytype", "") != "":
        workflowstep.setType(req.params.get("nytype", ""))

    v_part = {}
    v_part["fields"] = workflowstep.metaFields(lang(req)) or []
    v_part["node"] = workflowstep
    v_part["hiddenvalues"] = {"wnodeid": workflowstep.name}

    rule = {"read": str(workflowstep.getAccess("read") or "").split(","), "write": str(workflowstep.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["editor"] = req.getTAL("web/admin/modules/workflows.html", v_part, macro="view_editor")
    v["workflow"] = workflow
    v["workflowstep"] = workflowstep
    v["nodelist"] = nodelist
    v["workflowtypes"] = getWorkflowTypes()
    v["error"] = err
    v["update_type"] = req.params.get("ntype", "")
    v["actpage"] = req.params.get("actpage")
    return req.getTAL("web/admin/modules/workflows.html", v, macro="modify_step")
コード例 #45
0
def WorkflowStepList(req, wid):
    global _cssclass, _page
    workflow = getWorkflow(wid)
    workflowsteps = list(workflow.getSteps())
    order = getSortCol(req)
    actfilter = getFilter(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])')
            workflowsteps = filter(lambda x: num.match(x.name), workflowsteps)
        elif actfilter == "else" or actfilter == t(lang(req),
                                                   "admin_filter_else"):
            all = re.compile(r'([a-z]|[A-Z]|[0-9])')
            workflowsteps = filter(lambda x: not all.match(x.name),
                                   workflowsteps)
        else:
            workflowsteps = filter(
                lambda x: x.name.lower().startswith(actfilter), workflowsteps)

    pages = Overview(req, workflowsteps)

    # sorting
    if order != "":
        if int(order[0]) == 0:
            workflowsteps.sort(
                lambda x, y: cmp(x.name.lower(), y.name.lower()))
        elif int(order[0]) == 1:
            workflowsteps.sort(lambda x, y: cmp(x.type, y.type))
        elif int(order[0]) == 2:
            workflowsteps.sort(lambda x, y: cmp(x.getTrueId(), y.getTrueId()))
        elif int(order[0]) == 3:
            workflowsteps.sort(
                lambda x, y: cmp(x.getFalseId(), y.getFalseId()))
        elif int(order[0]) == 4:
            workflowsteps.sort(lambda x, y: cmp(len(x.get("description")),
                                                len(y.get("description"))))
        # elif int(order[0]) == 5:
        # workflowstep.sort(lambda x, y: cmp(x.getAccess("read"), y.getAccess("read")))
        # elif int(order[0]) == 6:
        # workflowstep.sort(lambda x, y: cmp(x.getAccess("write"), y.getAccess("write")))
        if int(order[1]) == 1:
            workflowsteps.reverse()
    else:
        workflowsteps.sort(lambda x, y: cmp(x.name.lower(), y.name.lower()))

    v = getAdminStdVars(req)
    v["sortcol"] = pages.OrderColHeader([
        t(lang(req), "admin_wfstep_col_1"),
        t(lang(req), "admin_wfstep_col_2"),
        t(lang(req), "admin_wfstep_col_3"),
        t(lang(req), "admin_wfstep_col_4"),
        t(lang(req), "admin_wfstep_col_5"),
        t(lang(req), "admin_wfstep_col_6"),
        t(lang(req), "admin_wfstep_col_7")
    ])
    v["workflow"] = workflow
    v["workflowsteps"] = workflowsteps
    v["pages"] = pages
    v["actfilter"] = actfilter
    return req.getTAL("web/admin/modules/workflows.html", v, macro="view_step")
コード例 #46
0
ファイル: mapping.py プロジェクト: hibozzy/mediatum
def view(req):
    mappings = list(getMappings())
    order = getSortCol(req)
    actfilter = getFilter(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])')
            mappings = filter(lambda x: num.match(x.getName()), mappings)

        elif actfilter == "else" or actfilter == t(lang(req),
                                                   "admin_filter_else"):
            all = re.compile(r'([a-z]|[A-Z]|[0-9])')
            mappings = filter(lambda x: not all.match(x.getName()), mappings)

        else:
            mappings = filter(
                lambda x: x.getName().lower().startswith(actfilter), mappings)

    pages = Overview(req, mappings)

    # sorting
    if order != "":
        if int(order[0:1]) == 0:
            mappings.sort(lambda x, y: cmp(x.getName().lower(),
                                           y.getName().lower()))
        elif int(order[0:1]) == 1:
            mappings.sort(lambda x, y: cmp(x.getNamespace().lower(),
                                           y.getNamespace().lower()))
        elif int(order[0:1]) == 2:
            mappings.sort(lambda x, y: cmp(x.getNamespaceUrl().lower(),
                                           y.getNamespaceUrl().lower()))
        elif int(order[0:1]) == 3:
            mappings.sort(lambda x, y: cmp(x.getDescription().lower(),
                                           y.getDescription().lower()))
        elif int(order[0:1]) == 4:
            mappings.sort(
                lambda x, y: cmp(len(x.getFields()), len(y.getFields())))
        elif int(order[0:1]) == 5:
            mappings.sort(
                lambda x, y: cmp(x.getMappingType(), y.getMappingType()))
        elif int(order[0:1]) == 6:
            mappings.sort(lambda x, y: cmp(x.getActive(), y.getActive()))

        if int(order[1:]) == 1:
            mappings.reverse()
    else:
        mappings.sort(lambda x, y: cmp(x.getName().lower(),
                                       y.getName().lower()))

    v = getAdminStdVars(req)
    v["sortcol"] = pages.OrderColHeader([
        t(lang(req), "admin_mapping_col_1"),
        t(lang(req), "admin_mapping_col_2"),
        t(lang(req), "admin_mapping_col_3"),
        t(lang(req), "admin_mapping_col_4"),
        t(lang(req), "admin_mapping_col_5"),
        t(lang(req), "admin_mapping_col_6"),
        t(lang(req), "admin_mapping_col_7")
    ])
    v["mappings"] = mappings
    v["options"] = []
    v["pages"] = pages
    v["actfilter"] = actfilter
    v["mappingtypes"] = "\n".join(getMappingTypes())
    return req.getTAL("web/admin/modules/mapping.html", v, macro="view")
コード例 #47
0
def showMaskList(req, id):
    metadatatype = getMetaType(id)
    masks = metadatatype.getMasks()
    order = getSortCol(req)
    actfilter = getFilter(req)

    # resets filter to all if adding mask in /metatype view
    # if req.params.get('acttype') == 'mask' or req.params.get('acttype') == 'schema':
    #     if req.path == '/metatype' and 'filterbutton' not in req.params:
    #         actfilter = '*'

    # resets filter when going to a new view
    if 'filterbutton' not in req.params:
        actfilter = '*'

    # 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])')
            masks = filter(lambda x: num.match(x.name), masks)

        elif actfilter == "else" or actfilter == t(lang(req), "admin_filter_else"):
            all = re.compile(r'([a-z]|[A-Z]|[0-9])')
            masks = filter(lambda x: not all.match(x.name), masks)
        else:
            masks = filter(lambda x: x.name.lower().startswith(actfilter), masks)

    pages = Overview(req, masks)

    defaults = {}
    for mask in masks:
        if mask.getDefaultMask():
            defaults[mask.getMasktype()] = mask.id

    # sorting
    if order != "":
        if int(order[0:1]) == 0:
            masks.sort(lambda x, y: cmp(x.name.lower(), y.name.lower()))
        elif int(order[0:1]) == 1:
            masks.sort(lambda x, y: cmp(x.getMasktype(), y.getMasktype()))
        elif int(order[0:1]) == 2:
            masks.sort(lambda x, y: cmp(x.getDescription(), y.getDescription()))
        elif int(order[0:1]) == 3:
            masks.sort(lambda x, y: cmp(x.getDefaultMask(), y.getDefaultMask()))
        elif int(order[0:1]) == 4:
            masks.sort(lambda x, y: cmp(x.getLanguage(), y.getLanguage()))
        if int(order[1:]) == 1:
            masks.reverse()
    else:
        masks.sort(lambda x, y: cmp(x.getOrderPos(), y.getOrderPos()))

    v = getAdminStdVars(req)
    v["filterattrs"] = []
    v["filterarg"] = req.params.get("filtertype", "name")
    v["sortcol"] = pages.OrderColHeader(
        [
            t(
                lang(req), "admin_mask_col_1"), t(
                lang(req), "admin_mask_col_2"), t(
                    lang(req), "admin_mask_col_3"), t(
                        lang(req), "admin_mask_col_4"), t(
                            lang(req), "admin_mask_col_5"), t(
                                lang(req), "admin_mask_col_6")])
    v["metadatatype"] = metadatatype
    v["masktypes"] = getMaskTypes()
    v["lang_icons"] = {"de": "/img/flag_de.gif", "en": "/img/flag_en.gif", "no": "/img/emtyDot1Pix.gif"}
    v["masks"] = masks
    v["pages"] = pages
    v["order"] = order
    v["defaults"] = defaults

    v["order"] = order
    v["actfilter"] = actfilter
    return req.getTAL("web/admin/modules/metatype_mask.html", v, macro="view_mask")
コード例 #48
0
ファイル: metatype.py プロジェクト: mediatum/mediatum
def view(req):
    mtypes = q(Metadatatypes).one().children.order_by("name").all()
    actfilter = getFilter(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])')
            if req.params.get("filtertype", "") == "id":
                mtypes = filter(lambda x: num.match(x.name), mtypes)
            else:
                mtypes = filter(lambda x: num.match(x.getLongName()), mtypes)
        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", "") == "id":
                mtypes = filter(lambda x: not all.match(x.name), mtypes)
            else:
                mtypes = filter(lambda x: not all.match(x.getLongName()), mtypes)
        else:
            if req.params.get("filtertype", "") == "id":
                mtypes = filter(lambda x: x.name.lower().startswith(actfilter), mtypes)
            else:
                mtypes = filter(lambda x: x.getLongName().lower().startswith(actfilter), mtypes)

    pages = Overview(req, mtypes)
    order = getSortCol(req)

    # sorting
    if order != "":
        if int(order[0:1]) == 0:
            mtypes.sort(lambda x, y: cmp(x.name.lower(), y.name.lower()))
        elif int(order[0:1]) == 1:
            mtypes.sort(lambda x, y: cmp(x.getLongName().lower(), y.getLongName().lower()))
        elif int(order[0:1]) == 2:
            mtypes.sort(lambda x, y: cmp(x.getDescription().lower(), y.getDescription().lower()))
        elif int(order[0:1]) == 3:
            mtypes.sort(lambda x, y: cmp(x.getActive(), y.getActive()))
        elif int(order[0:1]) == 4:
            mtypes.sort(lambda x, y: cmp(x.getDatatypeString().lower(), y.getDatatypeString().lower()))
        if int(order[1:]) == 1:
            mtypes.reverse()
    else:
        mtypes.sort(lambda x, y: cmp(x.name.lower(), y.name.lower()))

    v = getAdminStdVars(req)
    v["sortcol"] = pages.OrderColHeader(
        [
            t(
                lang(req), "admin_meta_col_1"), t(
                lang(req), "admin_meta_col_2"), t(
                    lang(req), "admin_meta_col_3"), t(
                        lang(req), "admin_meta_col_4"), t(
                            lang(req), "admin_meta_col_5"), t(
                                lang(req), "admin_meta_col_6")])
    v["metadatatypes"] = mtypes
    v["get_classname_for_typestring"] = Node.get_classname_for_typestring
    v['dtypes'] = Node.__mapper__.polymorphic_map  # is used to prevent missing plugins from causing error
    v["pages"] = pages
    v["actfilter"] = actfilter
    v["filterattrs"] = [("id", "admin_metatype_filter_id"), ("name", "admin_metatype_filter_name")]
    v["filterarg"] = req.params.get("filtertype", "id")
    v["csrf"] = req.csrf_token.current_token
    return req.getTAL("web/admin/modules/metatype.html", v, macro="view_type")