56 lines
1.3 KiB
Python
56 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
|