Fix all integrations
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
from __future__ import annotations
|
||||
|
||||
import datetime
|
||||
import hashlib
|
||||
import json
|
||||
from urllib.parse import urlencode
|
||||
@@ -40,6 +41,7 @@ from core.tasks.chat_defaults import (
|
||||
)
|
||||
from core.tasks.codex_approval import queue_codex_event_with_pre_approval
|
||||
from core.tasks.codex_support import resolve_external_chat_id
|
||||
from core.tasks.engine import create_task_record_and_sync
|
||||
from core.tasks.providers import get_provider
|
||||
|
||||
|
||||
@@ -828,6 +830,9 @@ class TasksHub(LoginRequiredMixin, View):
|
||||
return {
|
||||
"projects": projects,
|
||||
"project_choices": all_projects,
|
||||
"epic_choices": TaskEpic.objects.filter(
|
||||
project__user=request.user
|
||||
).select_related("project").order_by("project__name", "name"),
|
||||
"tasks": tasks,
|
||||
"scope": scope,
|
||||
"person_identifier_rows": person_identifier_rows,
|
||||
@@ -875,6 +880,60 @@ class TasksHub(LoginRequiredMixin, View):
|
||||
return redirect(f"{reverse('tasks_hub')}?{urlencode(query)}")
|
||||
return redirect("tasks_hub")
|
||||
|
||||
if action == "task_create":
|
||||
project = get_object_or_404(
|
||||
TaskProject,
|
||||
user=request.user,
|
||||
id=request.POST.get("project_id"),
|
||||
)
|
||||
epic = None
|
||||
epic_id = str(request.POST.get("epic_id") or "").strip()
|
||||
if epic_id:
|
||||
epic = get_object_or_404(TaskEpic, id=epic_id, project=project)
|
||||
title = str(request.POST.get("title") or "").strip()
|
||||
if not title:
|
||||
messages.error(request, "Task title is required.")
|
||||
return redirect("tasks_hub")
|
||||
scope = self._scope(request)
|
||||
source_service = str(scope.get("service") or "").strip().lower() or "web"
|
||||
source_channel = str(scope.get("identifier") or "").strip()
|
||||
due_raw = str(request.POST.get("due_date") or "").strip()
|
||||
due_date = None
|
||||
if due_raw:
|
||||
try:
|
||||
due_date = datetime.date.fromisoformat(due_raw)
|
||||
except Exception:
|
||||
messages.error(request, "Due date must be YYYY-MM-DD.")
|
||||
return redirect("tasks_hub")
|
||||
task, _event = async_to_sync(create_task_record_and_sync)(
|
||||
user=request.user,
|
||||
project=project,
|
||||
epic=epic,
|
||||
title=title,
|
||||
source_service=source_service,
|
||||
source_channel=source_channel,
|
||||
actor_identifier=str(request.user.username or request.user.id),
|
||||
due_date=due_date,
|
||||
assignee_identifier=str(
|
||||
request.POST.get("assignee_identifier") or ""
|
||||
).strip(),
|
||||
immutable_payload={
|
||||
"source": "tasks_hub_manual_create",
|
||||
"person_id": scope["person_id"],
|
||||
"service": source_service,
|
||||
"identifier": source_channel,
|
||||
},
|
||||
event_payload={
|
||||
"source": "tasks_hub_manual_create",
|
||||
"via": "web_ui",
|
||||
},
|
||||
)
|
||||
messages.success(
|
||||
request,
|
||||
f"Created task #{task.reference_code} in '{project.name}'.",
|
||||
)
|
||||
return redirect("tasks_task", task_id=str(task.id))
|
||||
|
||||
if action == "project_map_identifier":
|
||||
project = get_object_or_404(
|
||||
TaskProject,
|
||||
|
||||
Reference in New Issue
Block a user