kanban-app/backend/app/routes/kanban/lists.py

55 lines
1.3 KiB
Python

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/<int:board_id>/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/<int:list_id>", 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/<int:list_id>", 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