from flask import Blueprint, request, jsonify from api import db from api.models import Category from api.helpers import pagination_to_dict, check_api_key mod = Blueprint("categories", __name__, url_prefix="/categories") mod.before_request(check_api_key) @mod.route("/", methods=["GET"]) def list(): page = request.args.get("page", 1, type=int) per_page = request.args.get("per_page", 10, type=int) query = Category.query.order_by(Category.name.asc()) pagination = query.paginate(page=page, per_page=per_page) j = { "pagination": pagination_to_dict(pagination), "data": [item.to_json() for item in pagination.items], } return jsonify(j) @mod.route("/", methods=["GET"]) def show(id): category = Category.query.get_or_404(id) return jsonify(category.to_json()) @mod.route("/", methods=["PUT"]) def update(id): category = Category.query.get_or_404(id) data = request.json for k, v in data.items(): setattr(category, k, v) db.session.add(category) db.session.commit() return jsonify(category.to_json())