def item_JSON(category_path, item_label):
    try:
        category = Category.get_one(category_path)
        item = Item.get_one(category, item_label)

        return jsonify(item.serialized)
    except NotFound:
        return json_not_found()
def edit_item(category_path, item_label):
    category = Category.get_one(category_path)
    item = Item.get_one(category, item_label)
    fields = field_list()

    if request.method == 'GET':
        title = item.title
        author = item.author
        source = item.source
        image = item.image
        text = item.text

        extend_fields_with_value(fields=fields,
                                 title=title,
                                 author=author,
                                 source=source,
                                 image=image,
                                 text=text)

        return render_template('add.html', fields=fields, category=category)
    else:
        error = check_request_fields(fields)

        if error:
            return render_template('add.html',
                                   fields=fields,
                                   category=category,
                                   error=error)
        else:
            obj = {}
            for field in fields:
                obj[field['name']] = field['value']

            error = item.edit(g.current_user, obj)

            if error:
                return render_template('add.html',
                                       fields=fields,
                                       category=category,
                                       error=error)
            else:
                return redirect(
                    url_for('show_category', category_path=category.path))
def delete_item(category_path, item_label):
    category = Category.get_one(category_path)
    item = Item.get_one(category, item_label)
    item.delete(g.current_user)

    return json_result('deleted successfully', 200)
def show_article(category_path, item_label):
    category = Category.get_one(category_path)
    item = Item.get_one(category, item_label)

    return render_template('article.html', category=category, item=item)