コード例 #1
0
def duplicate_task(task_id: int) -> Response:
    """Duplicate a task."""
    my_task = Task.query.filter_by(id=task_id).first()
    if my_task:
        new_task = Task()

        # pylint: disable=protected-access
        for key in my_task.__table__.columns.keys():
            if key not in ["id", "last_run", "last_run_job_id", "status_id"]:
                setattr(new_task, key, getattr(my_task, key))

        new_task.enabled = 0
        new_task.creator_id = current_user.id
        new_task.updater_id = current_user.id
        new_task.status_id = None
        new_task.order = None
        new_task.name = str(my_task.name or "") + " - Duplicated"

        db.session.add(new_task)
        db.session.commit()

        return redirect(url_for("task_bp.one_task", task_id=new_task.id))

    flash("Task does not exist.")
    return redirect(url_for("task_bp.all_tasks"))