Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 7888788d42 | |||
| 7a12cba4d5 |
@@ -0,0 +1,18 @@
|
|||||||
|
"""Add 'cancelled' value to task_status enum."""
|
||||||
|
|
||||||
|
from alembic import op
|
||||||
|
|
||||||
|
revision = "0031"
|
||||||
|
down_revision = "0030"
|
||||||
|
branch_labels = None
|
||||||
|
depends_on = None
|
||||||
|
|
||||||
|
|
||||||
|
def upgrade() -> None:
|
||||||
|
op.execute("ALTER TYPE task_status ADD VALUE IF NOT EXISTS 'cancelled'")
|
||||||
|
|
||||||
|
|
||||||
|
def downgrade() -> None:
|
||||||
|
# PostgreSQL does not support removing enum values without a full type rebuild.
|
||||||
|
# Downgrade is a no-op; the value simply becomes unused.
|
||||||
|
pass
|
||||||
@@ -13,6 +13,7 @@ class TaskStatus(str, enum.Enum):
|
|||||||
todo = "todo"
|
todo = "todo"
|
||||||
in_progress = "in_progress"
|
in_progress = "in_progress"
|
||||||
done = "done"
|
done = "done"
|
||||||
|
cancelled = "cancelled"
|
||||||
|
|
||||||
|
|
||||||
class TaskPriority(str, enum.Enum):
|
class TaskPriority(str, enum.Enum):
|
||||||
|
|||||||
@@ -71,10 +71,14 @@ async def create_task_route():
|
|||||||
if isinstance(due_date, tuple):
|
if isinstance(due_date, tuple):
|
||||||
return due_date
|
return due_date
|
||||||
|
|
||||||
status = TaskStatus(data["status"]).value if "status" in data else TaskStatus.todo.value
|
try:
|
||||||
priority = (
|
status = TaskStatus(data["status"]).value if "status" in data else TaskStatus.todo.value
|
||||||
TaskPriority(data["priority"]).value if "priority" in data else TaskPriority.none.value
|
except ValueError:
|
||||||
)
|
return jsonify({"error": f"Invalid status: {data['status']}"}), 400
|
||||||
|
try:
|
||||||
|
priority = TaskPriority(data["priority"]).value if "priority" in data else TaskPriority.none.value
|
||||||
|
except ValueError:
|
||||||
|
return jsonify({"error": f"Invalid priority: {data['priority']}"}), 400
|
||||||
|
|
||||||
project_id = data.get("project_id")
|
project_id = data.get("project_id")
|
||||||
if project_id is None and data.get("project"):
|
if project_id is None and data.get("project"):
|
||||||
@@ -123,9 +127,19 @@ async def update_task_route(task_id: int):
|
|||||||
uid = get_current_user_id()
|
uid = get_current_user_id()
|
||||||
data = await request.get_json()
|
data = await request.get_json()
|
||||||
fields = {}
|
fields = {}
|
||||||
for key in ("title", "status", "priority"):
|
for key in ("title",):
|
||||||
if key in data:
|
if key in data:
|
||||||
fields[key] = data[key]
|
fields[key] = data[key]
|
||||||
|
if "status" in data:
|
||||||
|
try:
|
||||||
|
fields["status"] = TaskStatus(data["status"]).value
|
||||||
|
except ValueError:
|
||||||
|
return jsonify({"error": f"Invalid status: {data['status']}"}), 400
|
||||||
|
if "priority" in data:
|
||||||
|
try:
|
||||||
|
fields["priority"] = TaskPriority(data["priority"]).value
|
||||||
|
except ValueError:
|
||||||
|
return jsonify({"error": f"Invalid priority: {data['priority']}"}), 400
|
||||||
|
|
||||||
# Accept both "body" and "description" (prefer body)
|
# Accept both "body" and "description" (prefer body)
|
||||||
if "body" in data:
|
if "body" in data:
|
||||||
|
|||||||
Reference in New Issue
Block a user