def put_project(project_id: int) -> ApiResponse: project = ProjectModel.find_by_id(project_id) if not project: abort( 404, description=ERROR_404.format("Project", "id", project_id), ) project_json = request.get_json() project_by_title = ProjectModel.find_by_title(project_json.get("title")) if project_by_title and project_by_title.id != project_id: abort( 409, description=ERROR_409.format( "Project", "title", project_json.get("title"), ), ) project.start_date = project_json.get("start_date") project.end_date = project_json.get("end_date") project.title = project_json.get("title") project.description = project_json.get("description") project.goals = project_json.get("goals") project.status = project_json.get("status") project.admin_id = project_json.get("admin_id") project.save_to_db() return ( jsonify({ "message": MODIFIED.format("Project"), "project": project_schema.dump(project), }), 200, )
def post_project() -> ApiResponse: project_json = request.get_json() if ProjectModel.find_by_title(project_json.get("title")): abort( 409, description=ERROR_409.format( "Project", "title", project_json.get("title"), ), ) project = project_schema.load(project_json) project.save_to_db() return ( jsonify({ "message": CREATED.format("Project"), "project": project_schema.dump(project), }), 201, )