Compact interfaces and edit more things inline

This commit is contained in:
2026-02-15 22:20:14 +00:00
parent 981ee56de7
commit b23af9bc7f
8 changed files with 429 additions and 12 deletions

View File

@@ -1,3 +1,5 @@
import re
from asgiref.sync import async_to_sync
from django.contrib.auth.mixins import LoginRequiredMixin
from django.db import transaction
@@ -12,6 +14,7 @@ from core.models import Message, QueuedMessage
from core.util import logs
log = logs.get_logger("queue")
_INLINE_TARGET_RE = re.compile(r"^#queue-inline-editor-[A-Za-z0-9_-]+$")
class AcceptMessageAPI(LoginRequiredMixin, APIView):
@@ -92,9 +95,22 @@ class QueueCreate(LoginRequiredMixin, ObjectCreate):
class QueueUpdate(LoginRequiredMixin, ObjectUpdate):
model = QueuedMessage
form_class = QueueForm
window_content = "mixins/window-content/queue-form-inline.html"
submit_url_name = "queue_update"
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
raw_target = str(self.request.GET.get("hx_target") or "").strip()
if _INLINE_TARGET_RE.fullmatch(raw_target):
context["submit_target"] = raw_target
else:
context["submit_target"] = "#modals-here"
context["is_inline_edit"] = context["submit_target"].startswith(
"#queue-inline-editor-"
)
return context
class QueueDelete(LoginRequiredMixin, ObjectDelete):
model = QueuedMessage