ссылка на полную папку: https://github.com/rashmiranjanrrs/todo-app-in-MVC-Architechture
app / controller / UserController
from flask import request, jsonify
from app import db
from app.model.Task import Task
from app.model.User import User
import datetime
from flask_httpauth import HTTPBasicAuth
auth = HTTPBasicAuth()
class TaskController:
@auth.get_password
def pass_auth(username):
user = User.query.filter_by(username=username).first()
if user is not None:
return user.password
else:
return None
@auth.login_required
def addtask():
data = request.get_json()
content = data['content']
task = Task(content, user=User.query.filter_by(username=auth.username()).first())
db.session.add(task)
db.session.commit()
return jsonify({
'username': auth.username(),
'task-id': task.id,
'content': task.content
})
@auth.login_required
def markdone():
data = request.get_json()
task_id = data['task_id']
task = Task.query.get(task_id)
if task is None:
return jsonify({
'status': 'Failed'
})
task.done = True
task.end_date = datetime.datetime.now()
db.session.commit()
return jsonify({
'content': task.content,
'add_date': task.add_date,
'end_date': task.end_date,
'task_completed': task.done
})
@auth.login_required
def deletetask():
data = request.get_json()
task_id = data['task_id']
task = Task.query.filter_by(id=task_id).first()
if not task:
return jsonify({'message': 'No task found!'})
deleted_task = jsonify({
'status': 'success',
'task_id': task.id,
'content': task.content,
'task_completed': task.done
})
db.session.delete(task)
db.session.commit()
return deleted_task
@auth.login_required
def alltasks():
user = User.query.filter_by(username= auth.username()).first()
if user is None:
return jsonify({
'status': 'failed'
})
task_list = {}
for task in user.tasks:
task_list[task.id] = {'content': task.content,
'add_date': task.add_date,
'task_completed': task.done}
return jsonify(task_list)
app / model / Task
Здесь можно определить операции CRUD, связанные с таблицей TASKИспользуйте подключение к базе данных из службы базы данных в этом конструкторе задач, чтобы оно было доступно во всех операциях TASK crud. Средства CRUD -> Создать, прочитать, обновить, удалить действия для таблицы.
from app import db
import datetime
class Task(db.Model):
id = db.Column(db.Integer, primary_key=True)
content = db.Column(db.Text)
add_date = db.Column(db.DateTime, default=datetime.datetime.now())
end_date = db.Column(db.DateTime)
done = db.Column(db.Boolean, default=False)
user = db.relationship('User', backref='tasks', lazy=True)
user_id = db.Column(db.Integer, db.ForeignKey('user.id'), default=False)
def __init__(self, content, user):
self.content = content
self.user = user
def __repr__(self):
return '<Task %r>' % self.content
выберите задачутаблица из db-соединения и использование в методах