Exemple #1
0
def get_categories():
    """``GET`` |API_URL_BASE|/categories/

    Get a list of categories.

    :param order: **Query** supported key: *create_time(default)*,
        *article_count*, *name*
    :param boolean desc: **Query** decrease order, default: false

    Response JSON:

    .. code-block:: javascript

        // success
        {
            $errors: null,
            categories: [
                {
                    id: string,
                    name: string,
                    article_count: integer
                }
            ]
        }

    Permission: ``READ_CATEGORY``
    """
    supported_key = {
        'create_time': Category.create_time,
        'article_count': fn.Count(Article.id),
        'name': Category.name
    }
    default_key = supported_key['create_time']
    order_key = supported_key.get(request.args.get('order'), default_key)

    if request.args.get('desc', 'false') == 'true':
        order_key = order_key.desc()

    raw_categories = Category.query().order_by(order_key)
    categories = [category.to_dict() for category in raw_categories]
    return None, {'categories': categories}
Exemple #2
0
def delete_category(id):
    """``DELETE`` |API_URL_BASE|/cate/:category_id

    Delete a category.

    :param id: category id

    Response JSON:

    .. code-block:: javascript

        // success
        {$errors: null}

        // failed
        {
            $errors: {
                not_empty: 'this category is not empty.',
                id: 'this category does not exist.'
            }
        }

    Permission: ``EDIT_CATEGORY``
    """
    try:
        this_category = Category.query().where(Category.id == id).get()
    except Category.DoesNotExist:
        return {'id': '该分类 %s 不存在' % id}

    if this_category.count > 0:
        return {'not_empty': '该分类下还有 %d 篇文章,请清空后再删除' % this_category.count}

    this_category.delete_instance()

    signals.event_emitted.send(current_app._get_current_object(),
                               type='Category: Delete',
                               description='category(%s) has been deleted.' %
                               id)