def test_delete_project_task_bad(resource): """ Should not be able to delete a task if it does not belong to the project """ user_id = resource proj = ProjectRepo.add_project(description="ProjectA", user=user_id, tasks=[]) task = TaskRepo.add_task(description="Task1", user=user_id) assert ProjectRepo.delete_project_task(proj["id"], task["id"], user_id) == False
def test_store_project(resource): user_id = resource TaskRepo.add_task(description="Task1", user=user_id) TaskRepo.add_task(description="Task2", user=user_id) tasks = list(map(lambda t: t["id"], TaskRepo.get_all_tasks())) ProjectRepo.add_project(description="ProjectA", tasks=tasks, user=user_id) projects = ProjectRepo.get_all_projects() assert len(projects) == 1 assert projects[0]["description"] == "ProjectA" assert len(projects[0]["tasks"]) == 2 assert projects[0]["tasks"][0]["id"] in tasks assert projects[0]["tasks"][1]["id"] in tasks
def test_store_project_task(resource): user_id = resource added_proj_one = ProjectRepo.add_project(description="ProjectA", user=user_id, tasks=[]) assert len(added_proj_one["tasks"]) == 0 added_subtask = ProjectRepo.add_project_task(added_proj_one["id"], "ProjectASubtask", user_id) added_proj_two = ProjectRepo.get_all_projects()[0] assert len(added_proj_two["tasks"]) == 1 assert added_proj_one["id"] == added_proj_two["id"] assert added_subtask["id"] in map(lambda t: t["id"], added_proj_two["tasks"])
def test_delete_project_task_good(resource): """ Successfully delete a subtask for a given project. """ user_id = resource proj = ProjectRepo.add_project(description="ProjectA", user=user_id, tasks=[]) subtask = ProjectRepo.add_project_task(proj["id"], "ProjectASubtask", user_id) assert ProjectRepo.delete_project_task(proj["id"], subtask["id"], user_id) == True proj = ProjectRepo.get_all_projects()[0] assert len(proj["tasks"]) == 0
def project_get(): uid = current_user.get_obj_id() user_projects = ProjectRepo.get_all_projects(user=uid) res = {} if user_projects: res["success"] = True res["data"] = user_projects else: res["success"] = False res["data"] = {} return json.dumps(res)
def project_add(): uid = current_user.get_obj_id() payload = request.get_json() if "description" not in payload: res = {"success": False} else: res = {} added_project = ProjectRepo.add_project(payload["description"], uid) if added_project: res["success"] = True res["data"] = added_project else: res["success"] = False return json.dumps(res)
def project_delete(project_id): delete_res = ProjectRepo.delete_project(project_id) return json.dumps({"success": delete_res})
def project_task_delete(project_id, task_id): uid = current_user.get_id() res = ProjectRepo.delete_project_task(project_id, task_id, uid) return json.dumps({"success": res})
from flask_login import LoginManager from GTDApp.repo import ItemRepo, TaskRepo, UserRepo, ProjectRepo # Initialize the app app = Flask(__name__) app.secret_key = "myspookysecret" # TODO: Make this configurable if os.environ.get("CONFIG_TYPE") == "test": app.config.from_pyfile(os.path.join(os.path.dirname(__file__), "..", "./config/config.cfg.test")) else: app.config.from_pyfile(os.path.join(os.path.dirname(__file__), "..", "./config/config.cfg.default")) # Initialize the login manager for the app login_manager = LoginManager() login_manager.init_app(app) # Connect to the database ItemRepo.connect(app.config["DBNAME"]) TaskRepo.connect(app.config["DBNAME"]) UserRepo.connect(app.config["DBNAME"]) ProjectRepo.connect(app.config["DBNAME"]) from GTDApp.views import index from GTDApp.views import item from GTDApp.views import task from GTDApp.views import project