Пример #1
0
def create_item_containers(container_dic):
    for name, dic in container_dic.items():
        container_obj = items.container_from_path(items.container_path(dic["path_lis"]))
        if container_obj is None:
            save_container_path(dic["path_lis"], dic["description"])
        if "children" in dic:
            create_item_containers(dic["children"])
Пример #2
0
def put_item():
    """
    (PUT: item)
    """
    #attributes
    obj_id = request.form.get("id", request.args.get("id", None))
    path_lis_json = request.form.get("path_lis", request.args.get("path_lis", None))
    path_lis = json.loads(path_lis_json) if path_lis_json is not None and path_lis_json != "" else None
    container_obj = container_from_path(container_path(path_lis))
    name = request.form.get("name", request.args.get("name", None))
    description = request.form.get("description", request.args.get("description", None))
    price = request.form.get("price", request.args.get("price", None))
    quantity = request.form.get("quantity", request.args.get("quantity", None))
    status = request.form.get("status", request.args.get("status", ItemStatus.VISIBLE))
    group_id = request.form.get("group-id", request.args.get("group-id", None))

    #extras
    custom_attr_json = request.form.get("custom_attr_lis", request.args.get("custom_attr_lis", None))
    custom_attr = json.loads(custom_attr_json) if custom_attr_json is not None and custom_attr_json != "" else []
    tags_json = request.form.get("tags", request.args.get("tags", "[]"))
    try:
        custom_tags = json.loads(tags_json) if tags_json is not None else []
    except ValueError:
        custom_tags = []
    custom_media_json = request.form.get("custom_media_lis", request.args.get("custom_media_lis", None))
    custom_media = json.loads(custom_media_json) if custom_media_json is not None else []

    #handle files
    file_media_map = {}
    files = ["media_file"] + custom_media
    for f_name in files:
        base64_encoded = request.form.get(f_name, request.args.get(f_name))
        if base64_encoded is None: continue

        f = tempfile.NamedTemporaryFile(delete=False)
        f.write(base64_encoded.decode("base64"))
        f.close()

        img_file, media_obj = None, None
        try:
            img_file = open(f.name)
            _ = Image.open(f.name)
            media_obj = save_image(img_file, UPLOAD_METHOD)
            img_file.close()
        except IOError:
            img_file = open(f.name)
            media_obj = save_media(img_file, UPLOAD_METHOD)
            img_file.close()
        file_media_map[f_name] = media_obj
    main_media_obj = file_media_map["media_file"] if "media_file" in file_media_map else None;

    if obj_id is None or obj_id == "":
        new_item(container_obj, custom_attr, custom_media, custom_tags, description, file_media_map, main_media_obj,
                 name,
                 price, quantity, status, group_id)
    else:
        update_item(custom_attr, custom_media, custom_tags, description, file_media_map, name, obj_id, price, quantity)

    return jsonify({
        "status": "ok",
    })