1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
| from flask_restx import Namespace, Resource, fields from flask_jwt_extended import jwt_required, get_jwt_identity from app import db from app.models.task import Task
ns = Namespace('tasks', description='任务管理相关')
task_model = ns.model('Task', { 'id': fields.Integer, 'title': fields.String(required=True), 'description': fields.String, 'status': fields.String, 'created_at': fields.DateTime, 'updated_at': fields.DateTime })
@ns.route('') class TaskList(Resource): @jwt_required() @ns.marshal_list_with(task_model) def get(self): user_id = get_jwt_identity() tasks = Task.query.filter_by(user_id=user_id).all() return tasks @jwt_required() @ns.expect(task_model) @ns.marshal_with(task_model) def post(self): user_id = get_jwt_identity() data = ns.payload task = Task( title=data['title'], description=data.get('description', ''), status=data.get('status', 'pending'), user_id=user_id ) db.session.add(task) db.session.commit() return task, 201
@ns.route('/<int:task_id>') class TaskDetail(Resource): @jwt_required() @ns.marshal_with(task_model) def get(self, task_id): user_id = get_jwt_identity() task = Task.query.filter_by(id=task_id, user_id=user_id).first_or_404() return task @jwt_required() @ns.expect(task_model) @ns.marshal_with(task_model) def put(self, task_id): user_id = get_jwt_identity() task = Task.query.filter_by(id=task_id, user_id=user_id).first_or_404() data = ns.payload task.title = data.get('title', task.title) task.description = data.get('description', task.description) task.status = data.get('status', task.status) db.session.commit() return task @jwt_required() def delete(self, task_id): user_id = get_jwt_identity() task = Task.query.filter_by(id=task_id, user_id=user_id).first_or_404() db.session.delete(task) db.session.commit() return {'message': '任务已删除'}, 200
|