Add toggle functionality for pre-review flag on case resources
This commit is contained in:
@@ -12,10 +12,11 @@
|
||||
{% endif %}
|
||||
</div>
|
||||
{% if can_edit %}
|
||||
<div>
|
||||
<button type="button" class="btn btn-sm btn-outline-danger" hx-post="{% url 'atlas:case_detach_resource' pk=case.pk %}" hx-vals='{"resource_id": "{{ cr.resource.pk }}"}' hx-swap="outerHTML" hx-target="#case-resources-list">Remove</button>
|
||||
</div>
|
||||
{% endif %}
|
||||
<div class="d-flex gap-2">
|
||||
<button type="button" class="btn btn-sm btn-outline-secondary" title="Toggle pre/post" hx-post="{% url 'atlas:case_toggle_resource_pre' pk=case.pk %}" hx-vals='{"resource_id": "{{ cr.resource.pk }}"}' hx-swap="outerHTML" hx-target="#case-resources-list">Toggle</button>
|
||||
<button type="button" class="btn btn-sm btn-outline-danger" hx-post="{% url 'atlas:case_detach_resource' pk=case.pk %}" hx-vals='{"resource_id": "{{ cr.resource.pk }}"}' hx-swap="outerHTML" hx-target="#case-resources-list">Remove</button>
|
||||
</div>
|
||||
{% endif %}
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
|
||||
@@ -183,6 +183,7 @@ urlpatterns = [
|
||||
# HTMX endpoints for attaching/detaching resources to a case
|
||||
path("case/<int:pk>/attach-resource/", views.case_attach_resource, name="case_attach_resource"),
|
||||
path("case/<int:pk>/detach-resource/", views.case_detach_resource, name="case_detach_resource"),
|
||||
path("case/<int:pk>/toggle-resource-pre/", views.case_toggle_resource_pre, name="case_toggle_resource_pre"),
|
||||
# Backwards-compatible redirect from legacy case_id-style URLs
|
||||
path(
|
||||
"collection/<int:exam_id>/case/id/<int:case_id>/details",
|
||||
|
||||
+34
-3
@@ -4022,7 +4022,6 @@ def resource_search_widget(request):
|
||||
|
||||
Returns rendered partial `atlas/partials/resource_search_widget_results.html`.
|
||||
"""
|
||||
from .models import Resource
|
||||
|
||||
q = request.GET.get("q", "").strip()
|
||||
site = request.GET.get("site")
|
||||
@@ -4073,7 +4072,6 @@ def case_attach_resource(request, pk):
|
||||
|
||||
resource_id = request.POST.get("resource_id")
|
||||
pre_review = request.POST.get("pre_review", "0") == "1"
|
||||
from .models import Resource, CaseResource
|
||||
try:
|
||||
resource = Resource.objects.get(pk=int(resource_id))
|
||||
except Exception:
|
||||
@@ -4104,7 +4102,6 @@ def case_detach_resource(request, pk):
|
||||
if not case.check_user_can_edit(request.user):
|
||||
return HttpResponse(status=403)
|
||||
resource_id = request.POST.get("resource_id")
|
||||
from .models import CaseResource
|
||||
try:
|
||||
cr = CaseResource.objects.filter(case=case, resource__id=int(resource_id))
|
||||
cr.delete()
|
||||
@@ -4121,6 +4118,40 @@ def case_detach_resource(request, pk):
|
||||
return resp
|
||||
|
||||
|
||||
@login_required
|
||||
@require_POST
|
||||
def case_toggle_resource_pre(request, pk):
|
||||
"""Toggle the pre_review flag on a CaseResource (HTMX POST).
|
||||
|
||||
POST params:
|
||||
- resource_id: integer
|
||||
|
||||
Returns the updated `atlas/partials/case_resources_list.html` fragment.
|
||||
"""
|
||||
case = get_case_for_case_detail(pk)
|
||||
if not case.check_user_can_edit(request.user):
|
||||
return HttpResponse(status=403)
|
||||
|
||||
resource_id = request.POST.get("resource_id")
|
||||
try:
|
||||
cr = CaseResource.objects.get(case=case, resource__id=int(resource_id))
|
||||
except Exception:
|
||||
return HttpResponse(status=400)
|
||||
|
||||
cr.pre_review = not bool(cr.pre_review)
|
||||
cr.save()
|
||||
|
||||
# Refresh case from DB to ensure related sets reflect changes and render updated list
|
||||
try:
|
||||
case = Case.objects.get(pk=case.pk)
|
||||
except Exception:
|
||||
pass
|
||||
html = render_to_string("atlas/partials/case_resources_list.html", {"case": case}, request=request)
|
||||
resp = HttpResponse(html)
|
||||
resp["HX-Trigger"] = json.dumps({"caseResourcesChanged": {"case_id": case.pk}})
|
||||
return resp
|
||||
|
||||
|
||||
def series_dicom_json(request, pk):
|
||||
series = get_object_or_404(Series, pk=pk)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user