Пример #1
0
 def test_rename_simple(self):
     self.assertEqual(renameKey({"$ref": "a"}, "$ref", "__$ref"),
                      {"__$ref": "a"})
     self.assertEqual(
         renameKey({"items": [{
             "$ref": "a"
         }]}, "$ref", "__$ref"), {"items": [{
             "__$ref": "a"
         }]})
Пример #2
0
def form_render(formId):
    """Render single form."""
    form = None
    try:
        form = Form.objects.only("name", "schema", "uiSchema", "formOptions",
                                 "cff_permissions").get(
                                     {"_id": ObjectId(formId)})
        # Convert __$ref back to $ref.
        if form.schema:
            form.schema = renameKey(form.schema, "__$ref", "$ref")
    except DoesNotExist:
        raise NotFoundError(f"Form ID not found: {formId}")
    return {"res": serialize_model(form)}
Пример #3
0
def form_edit(formId):
    from ..main import app
    form = Form.objects.get({"_id": ObjectId(formId)})
    app.check_permissions(form, 'Forms_Edit')
    body = pick(app.current_request.json_body,
                ["schema", "uiSchema", "formOptions", "name"])
    for k, v in body.items():
        setattr(form, k, v)
    # Validate $ref properly.
    if form.schema:
        form.schema = renameKey(form.schema, "$ref", "__$ref")
    form.save()
    form = Form.objects.get({"_id": ObjectId(formId)})
    return {"res": {"success": True, "updated_values": serialize_model(form)}}
Пример #4
0
def form_edit(formId):
    from ..main import app

    form = Form.objects.get({"_id": ObjectId(formId)})
    app.check_permissions(form, "Forms_Edit")
    body = pick(
        app.current_request.json_body,
        ["schema", "uiSchema", "formOptions", "name", "tags"],
    )
    for k, v in body.items():
        setattr(form, k, v)
    # Rename $ref properly.
    if form.schema:
        form.schema = renameKey(form.schema, "$ref", "__$ref")
    if (form.formOptions and form.formOptions.dataOptions
            and "views" in form.formOptions.dataOptions):
        form.formOptions.dataOptions["views"] = replaceKey(
            replaceKey(form.formOptions.dataOptions["views"], "$", "|"), ".",
            "||")
    form.save()
    form = Form.objects.get({"_id": ObjectId(formId)})
    return {"res": {"success": True, "updated_values": serialize_model(form)}}
Пример #5
0
 def test_replace_dict_in_list(self):
     orig = [{"a": [{"b": [{"$ref": {"_id": None, "n": {"$ref": 1}}}]}]}]
     new = [{"a": [{"b": [{"__$ref": {"_id": None, "n": {"__$ref": 1}}}]}]}]
     self.assertEqual(renameKey(orig, "$ref", "__$ref"), new)