Как принять запросы из папки контроллера в папку модели - PullRequest
1 голос
/ 02 октября 2019

ссылка на полную папку: 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-соединения и использование в методах

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...