Пример #1
0
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,
    )
Пример #2
0
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,
    )