Add resource search panel with HTMX integration for dynamic resource addition

This commit is contained in:
Ross
2026-02-02 09:18:16 +00:00
parent 4628f39a49
commit 2159b045cd
3 changed files with 23 additions and 1 deletions
@@ -205,7 +205,14 @@
{% if can_edit%}
<div class="mb-2">
{% include 'atlas/partials/resource_search_panel.html' %}
<div id="resource-search-panel-placeholder">
<button class="btn btn-sm btn-outline-primary"
hx-get="{% url 'atlas:resource_search_panel' %}?case_id={{ case.pk }}"
hx-target="#resource-search-panel-placeholder"
hx-swap="innerHTML">
Add Resource
</button>
</div>
</div>
{% endif %}
+1
View File
@@ -50,6 +50,7 @@ urlpatterns = [
path("resource/<int:pk>/view", views.resource_view, name="resource_view"),
path("resource/<int:pk>/update", views.ResourceUpdate.as_view(), name="resource_update"),
path("resource/<int:pk>/delete", views.ResourceDelete.as_view(), name="resource_delete"),
path("resource-search-panel/", views.resource_search_panel, name="resource_search_panel"),
path("resource-search-widget/", views.resource_search_widget, name="resource_search_widget"),
path(
+14
View File
@@ -4160,6 +4160,20 @@ def resource_search_widget(request):
return render(request, "atlas/partials/resource_search_widget_results.html", {"results": results, "field": field, "case_id": case_id})
@login_required
def resource_search_panel(request):
"""HTMX endpoint: return the full resource search panel HTML fragment.
Expects optional GET param `case_id` to prefill the hidden field.
"""
case_id = request.GET.get("case_id")
return render(request, "atlas/partials/resource_search_panel.html", {
"case": (Case.objects.filter(pk=case_id).first() if case_id else None),
"site_queryset": Site.objects.all(),
"subspecialty_queryset": Subspecialty.objects.all(),
})
@login_required
@require_POST
def case_attach_resource(request, pk):