diff --git a/djangorota/rota/urls.py b/djangorota/rota/urls.py index 705d615..c23b2b0 100644 --- a/djangorota/rota/urls.py +++ b/djangorota/rota/urls.py @@ -16,4 +16,6 @@ urlpatterns = [ path("worker///delete/", views.worker_delete, name="worker_delete"), path("worker//", views.worker_detail, name="worker_detail"), path("run//", views.rota_run_detail, name="rota_run_detail"), + path("run//export/html/", views.rota_run_export_html, name="rota_run_export_html"), + path("run//export/download/", views.rota_run_export_download, name="rota_run_export_download"), ] diff --git a/djangorota/rota/views.py b/djangorota/rota/views.py index bbb71f7..1aecd51 100644 --- a/djangorota/rota/views.py +++ b/djangorota/rota/views.py @@ -144,6 +144,24 @@ def rota_run_detail(request, run_id): return render(request, "rota/rota_run_detail.html", {"run": run}) +def rota_run_export_html(request, run_id): + from .models import RotaRun + + run = get_object_or_404(RotaRun, pk=run_id) + return render(request, "rota/rota_run_export.html", {"run": run}) + + +def rota_run_export_download(request, run_id): + from .models import RotaRun + + run = get_object_or_404(RotaRun, pk=run_id) + html = render_to_string("rota/rota_run_export.html", {"run": run}, request=request) + response = HttpResponse(html, content_type="text/html; charset=utf-8") + filename = f"rota_run_{run.id}_export.html" + response["Content-Disposition"] = f'attachment; filename="{filename}"' + return response + + @require_http_methods(["GET", "POST"]) def shift_add(request, rota_id): """HTMX endpoint to render a shift form or accept submission to append a shift to the rota."""