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")
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")
def showEditor(req): path = req.path[1:].split("/") mtype = getMetaType(path[1]) editor = mtype.getMask(path[2]) req.params["metadatatype"] = mtype for key in req.params.keys(): if req.params.get("op", "") == "cancel": if "savedetail" in req.params.keys(): del req.params["savedetail"] break if key.startswith("up_"): changeOrder( q(Node).get(key[3:-2]).parents[0], q(Node).get(key[3:-2]).orderpos, -1) break if key.startswith("down_"): changeOrder( q(Node).get(key[5:-2]).parents[0], -1, q(Node).get(key[5:-2]).orderpos) break if key.startswith("delete_"): editor.deleteMaskitem(key[7:-2]) break if key.startswith("edit_"): op = key[5:-2] req.params["edit"] = op req.params["op"] = "edit" break if key.startswith("new_"): req.params["edit"] = " " break if key.startswith("newdetail_"): req.params["pid"] = key[10:-2] req.params["op"] = "newdetail" req.params["edit"] = " " if req.params.get("type") in ("vgroup", "hgroup"): req.params["type"] = "field" req.params["op"] = "new" if "savedetail" in req.params.keys(): del req.params["savedetail"] break if req.params.get("op", "") == "group": # create new group for selected objects req.params["op"] = "new" req.params["edit"] = " " req.params["type"] = req.params.get("group_type") req.params["pid"] = q(Node).get( req.params.get("sel_id").split(";")[0]).parents[0].id if "saveedit" in req.params.keys() and req.params.get("op", "") != "cancel": # update node label = req.params.get("label", "-new-") if req.params.get("op", "") == "edit": item = q(Node).get(req.params.get("id")) item.setLabel(req.params.get("label", "")) db.session.commit() if "mappingfield" in req.params.keys(): # field of export mask item.set("attribute", req.params.get("attribute")) item.set("fieldtype", req.params.get("fieldtype")) mf = req.params.get("mappingfield").split(";") if req.params.get( "fieldtype" ) == "mapping": # mapping field of mapping definition selected item.set("mappingfield", mf[0]) else: # attribute name as object name item.set("mappingfield", ";".join(mf[1:])) db.session.commit() else: f = q(Node).get(long(req.params.get("field"))) field = item.children try: field = list(field)[0] if ustr(field.id) != req.params.get("field"): item.children.remove(field) item.children.append(f) field.setValues( req.params.get(u"{}_value".format(field.get("type")), u"")) db.session.commit() except: logg.exception("exception in showEditor / saveedit, ignore") pass elif req.params.get("op", "") == "new": if req.params.get("fieldtype", "") == "common" and req.params.get("field"): # existing field used fieldid = long(req.params.get("field")) elif "mappingfield" in req.params.keys(): # new mapping field fieldid = "" # long(req.params.get("mappingfield")) label = "mapping" else: # create new metaattribute parent = req.params.get("metadatatype").getName() fieldvalue = req.params.get( req.params.get("newfieldtype", "") + '_value', "") if req.params.get("type") == "label": # new label fieldid = "" else: # normal field updateMetaField(parent, req.params.get("fieldname"), label, 0, req.params.get("newfieldtype"), option="", description=req.params.get( "description", ""), fieldvalues=fieldvalue, fieldvaluenum="", fieldid="") fieldid = ustr( getMetaField(parent, req.params.get("fieldname")).id) item = editor.addMaskitem(label, req.params.get("type"), fieldid, req.params.get("pid", "0")) if "mappingfield" in req.params.keys(): item.set("attribute", req.params.get("attribute")) item.set("fieldtype", req.params.get("fieldtype")) mf = req.params.get("mappingfield").split(";") if req.params.get( "fieldtype" ) == "mapping": # mapping field of mapping definition selected item.set("mappingfield", mf[0]) else: # attribute name as object name item.set("mappingfield", ";".join(mf[1:])) db.session.commit() position = req.params.get("insertposition", "end") if position == "end": # insert at the end of existing mask item.orderpos = len( q(Node).get(req.params.get("pid")).children) - 1 db.session.commit() else: # insert at special position fields = editor.getMaskFields() fields.all().sort(lambda x, y: cmp(x.orderpos, y.orderpos)) for f in fields: if f.orderpos >= q(Node).get( position).orderpos and f.id != item.id: f.orderpos = f.orderpos + 1 item.orderpos = q(Node).get(position).orderpos - 1 db.session.commit() item.setWidth(req.params.get("width", u'400')) item.setUnit(req.params.get("unit", u"")) item.setDefault(req.params.get("default", u"")) item.setFormat(req.params.get("format", u"")) item.setSeparator(req.params.get("separator", u"")) item.setDescription(req.params.get("description", u"")) item.setTestNodes(req.params.get("testnodes", u"")) item.setMultilang(req.params.get("multilang", u"")) db.session.commit() if "required" in req.params.keys(): item.setRequired(unicode(1)) else: item.setRequired(unicode(0)) db.session.commit() if "savedetail" in req.params.keys(): label = req.params.get("label", "-new-") # save details (used for hgroup) if req.params.get("op", "") == "edit": item = q(Node).get(req.params.get("id")) item.setLabel(req.params.get("label", "")) elif req.params.get("op", "") == "new": if req.params.get("sel_id", "") != "": item = editor.addMaskitem(label, req.params.get("type"), req.params.get("sel_id", "")[:-1], long(req.params.get("pid", "0"))) else: item = editor.addMaskitem(label, req.params.get("type"), 0, long(req.params.get("pid", "0"))) db.session.commit() # move selected elementd to new item-container if req.params.get("sel_id", "") != "": pos = 0 for i in req.params.get("sel_id")[:-1].split(";"): n = q(Node).get(i) # node to move n.setOrderPos(pos) p = q(Node).get(n.parents()[0].id) # parentnode p.children.remove(n) item.children.append(n) # new group pos += 1 db.session.commit() # position: position = req.params.get("insertposition", "end") if position == "end": # insert at the end of existing mask item.setOrderPos( len(q(Node).get(req.params.get("pid")).children) - 1) db.session.commit() else: # insert at special position fields = [] pidnode = q(Node).get(req.params.get("pid")) for field in pidnode.getChildren(): if field.getType().getName( ) == "maskitem" and field.id != pidnode.id: fields.append(field) fields.sort(lambda x, y: cmp(x.orderpos, y.orderpos)) for f in fields: if f.orderpos >= q(Node).get( position).orderpos and f.id != item.id: f.orderpos = f.orderpos + 1 item.orderpos = q(Node).get(position).orderpos - 1 db.session.commit() if "edit" not in req.params.keys(): item.set("type", req.params.get("type", u"")) item.setWidth(req.params.get("width", u'400')) item.setUnit(req.params.get("unit", u"")) item.setDefault(req.params.get("default", u"")) item.setFormat(req.params.get("format", u"")) item.setSeparator(req.params.get("separator", u"")) item.setDescription(req.params.get("description", u"")) if "required" in req.params.keys(): item.setRequired(unicode(1)) else: item.setRequired(unicode(0)) db.session.commit() v = {} v["edit"] = req.params.get("edit", "") if req.params.get("edit", "") != "": v["editor"] = editor.editItem(req) else: # show metaEditor v["editor"] = "" try: v["editor"] = req.getTALstr(editor.getMetaMask(req), {}) except: logg.exception("exception in showEditor") v["editor"] = editor.getMetaMask(req) v["title"] = editor.name v["csrf"] = req.csrf_token.current_token return req.getTAL("web/admin/modules/metatype.html", v, macro="editor_popup")
def showEditor(req): path = req.path[1:].split("/") mtype = getMetaType(path[1]) editor = mtype.getMask(path[2]) req.params["metadatatype"] = mtype for key in req.params.keys(): if req.params.get("op", "") == "cancel": if "savedetail" in req.params.keys(): del req.params["savedetail"] break if key.startswith("up_"): changeOrder(q(Node).get(key[3:-2]).parents[0], q(Node).get(key[3:-2]).orderpos, -1) break if key.startswith("down_"): changeOrder(q(Node).get(key[5:-2]).parents[0], -1, q(Node).get(key[5:-2]).orderpos) break if key.startswith("delete_"): editor.deleteMaskitem(key[7:-2]) break if key.startswith("edit_"): op = key[5:-2] req.params["edit"] = op req.params["op"] = "edit" break if key.startswith("new_"): req.params["edit"] = " " break if key.startswith("newdetail_"): req.params["pid"] = key[10:-2] req.params["op"] = "newdetail" req.params["edit"] = " " if req.params.get("type")in("vgroup", "hgroup"): req.params["type"] = "field" req.params["op"] = "new" if "savedetail" in req.params.keys(): del req.params["savedetail"] break if req.params.get("op", "") == "group": # create new group for selected objects req.params["op"] = "new" req.params["edit"] = " " req.params["type"] = req.params.get("group_type") req.params["pid"] = q(Node).get(req.params.get("sel_id").split(";")[0]).parents[0].id if "saveedit" in req.params.keys() and req.params.get("op", "") != "cancel": # update node label = req.params.get("label", "-new-") if req.params.get("op", "") == "edit": item = q(Node).get(req.params.get("id")) item.setLabel(req.params.get("label", "")) db.session.commit() if "mappingfield" in req.params.keys(): # field of export mask item.set("attribute", req.params.get("attribute")) item.set("fieldtype", req.params.get("fieldtype")) mf = req.params.get("mappingfield").split(";") if req.params.get("fieldtype") == "mapping": # mapping field of mapping definition selected item.set("mappingfield", mf[0]) else: # attribute name as object name item.set("mappingfield", ";".join(mf[1:])) db.session.commit() else: f = q(Node).get(long(req.params.get("field"))) field = item.children try: field = list(field)[0] if ustr(field.id) != req.params.get("field"): item.children.remove(field) item.children.append(f) field.setValues(req.params.get(u"{}_value".format(field.get("type")), u"")) db.session.commit() except: logg.exception("exception in showEditor / saveedit, ignore") pass elif req.params.get("op", "") == "new": if req.params.get("fieldtype", "") == "common" and req.params.get("field"): # existing field used fieldid = long(req.params.get("field")) elif "mappingfield" in req.params.keys(): # new mapping field fieldid = "" # long(req.params.get("mappingfield")) label = "mapping" else: # create new metaattribute parent = req.params.get("metadatatype").getName() fieldvalue = req.params.get(req.params.get("newfieldtype", "") + '_value', "") if req.params.get("type") == "label": # new label fieldid = "" else: # normal field updateMetaField(parent, req.params.get("fieldname"), label, 0, req.params.get("newfieldtype"), option="", description=req.params.get("description", ""), fieldvalues=fieldvalue, fieldvaluenum="", fieldid="") fieldid = ustr(getMetaField(parent, req.params.get("fieldname")).id) item = editor.addMaskitem(label, req.params.get("type"), fieldid, req.params.get("pid", "0")) if "mappingfield" in req.params.keys(): item.set("attribute", req.params.get("attribute")) item.set("fieldtype", req.params.get("fieldtype")) mf = req.params.get("mappingfield").split(";") if req.params.get("fieldtype") == "mapping": # mapping field of mapping definition selected item.set("mappingfield", mf[0]) else: # attribute name as object name item.set("mappingfield", ";".join(mf[1:])) db.session.commit() position = req.params.get("insertposition", "end") if position == "end": # insert at the end of existing mask item.orderpos = len(q(Node).get(req.params.get("pid")).children) - 1 db.session.commit() else: # insert at special position fields = editor.getMaskFields() fields.all().sort(lambda x, y: cmp(x.orderpos, y.orderpos)) for f in fields: if f.orderpos >= q(Node).get(position).orderpos and f.id != item.id: f.orderpos = f.orderpos + 1 item.orderpos = q(Node).get(position).orderpos - 1 db.session.commit() item.setWidth(req.params.get("width", u'400')) item.setUnit(req.params.get("unit", u"")) item.setDefault(req.params.get("default", u"")) item.setFormat(req.params.get("format", u"")) item.setSeparator(req.params.get("separator", u"")) item.setDescription(req.params.get("description", u"")) item.setTestNodes(req.params.get("testnodes", u"")) item.setMultilang(req.params.get("multilang", u"")) db.session.commit() if "required" in req.params.keys(): item.setRequired(unicode(1)) else: item.setRequired(unicode(0)) db.session.commit() if "savedetail" in req.params.keys(): label = req.params.get("label", "-new-") # save details (used for hgroup) if req.params.get("op", "") == "edit": item = q(Node).get(req.params.get("id")) item.setLabel(req.params.get("label", "")) elif req.params.get("op", "") == "new": if req.params.get("sel_id", "") != "": item = editor.addMaskitem(label, req.params.get("type"), req.params.get( "sel_id", "")[:-1], long(req.params.get("pid", "0"))) else: item = editor.addMaskitem(label, req.params.get("type"), 0, long(req.params.get("pid", "0"))) db.session.commit() # move selected elementd to new item-container if req.params.get("sel_id", "") != "": pos = 0 for i in req.params.get("sel_id")[:-1].split(";"): n = q(Node).get(i) # node to move n.setOrderPos(pos) p = q(Node).get(n.parents()[0].id) # parentnode p.children.remove(n) item.children.append(n) # new group pos += 1 db.session.commit() # position: position = req.params.get("insertposition", "end") if position == "end": # insert at the end of existing mask item.setOrderPos(len(q(Node).get(req.params.get("pid")).children) - 1) db.session.commit() else: # insert at special position fields = [] pidnode = q(Node).get(req.params.get("pid")) for field in pidnode.getChildren(): if field.getType().getName() == "maskitem" and field.id != pidnode.id: fields.append(field) fields.sort(lambda x, y: cmp(x.orderpos, y.orderpos)) for f in fields: if f.orderpos >= q(Node).get(position).orderpos and f.id != item.id: f.orderpos = f.orderpos + 1 item.orderpos = q(Node).get(position).orderpos - 1 db.session.commit() if "edit" not in req.params.keys(): item.set("type", req.params.get("type", u"")) item.setWidth(req.params.get("width", u'400')) item.setUnit(req.params.get("unit", u"")) item.setDefault(req.params.get("default", u"")) item.setFormat(req.params.get("format", u"")) item.setSeparator(req.params.get("separator", u"")) item.setDescription(req.params.get("description", u"")) if "required" in req.params.keys(): item.setRequired(unicode(1)) else: item.setRequired(unicode(0)) db.session.commit() v = {} v["edit"] = req.params.get("edit", "") if req.params.get("edit", "") != "": v["editor"] = editor.editItem(req) else: # show metaEditor v["editor"] = "" try: v["editor"] = req.getTALstr(editor.getMetaMask(req), {}) except: logg.exception("exception in showEditor") v["editor"] = editor.getMetaMask(req) v["title"] = editor.name v["csrf"] = req.csrf_token.current_token return req.getTAL("web/admin/modules/metatype.html", v, macro="editor_popup")