from flask import request from flask_jwt_extended import jwt_required from flask_pydantic import validate from app import db from app.decorators import load_board_owned, load_list_owned from app.models import List from app.schemas import ListCreateRequest from . import kanban_bp @kanban_bp.route("/boards//lists", methods=["POST"]) @jwt_required() @load_board_owned @validate(body=ListCreateRequest) def create_list(board_id, board, body: ListCreateRequest): """Create a new list in a board""" lst = List( name=body.name, board_id=board_id, pos=body.pos, ) db.session.add(lst) db.session.commit() return lst.to_dict(), 201 @kanban_bp.route("/lists/", methods=["PUT"]) @jwt_required() @load_list_owned @validate(body=ListCreateRequest) def update_list(list_id, lst, body: ListCreateRequest): """Update a list""" lst.name = body.name if request.json.get("closed") is not None: lst.closed = request.json.get("closed") lst.pos = body.pos db.session.commit() return lst.to_dict(), 200 @kanban_bp.route("/lists/", methods=["DELETE"]) @jwt_required() @load_list_owned def delete_list(list_id, lst): """Delete a list""" db.session.delete(lst) db.session.commit() return {"message": "List deleted"}, 200