.
This commit is contained in:
@@ -6,6 +6,7 @@
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1">
|
||||
<title>{% block title %}Proc Rota{% endblock %}</title>
|
||||
<link rel="stylesheet" href="{% static 'output/timetable.css' %}">
|
||||
<link rel="stylesheet" href="{% static 'css/forms.css' %}">
|
||||
<!-- Inline fallback for critical layout in case static file serving is unavailable -->
|
||||
<style>
|
||||
/* minimal critical styles from timetable.css to avoid broken layout when static not found */
|
||||
|
||||
@@ -14,6 +14,9 @@
|
||||
|
||||
<form method="post">
|
||||
{% csrf_token %}
|
||||
{% if token %}
|
||||
<input type="hidden" name="token" value="{{ token }}">
|
||||
{% endif %}
|
||||
{{ form|crispy }}
|
||||
<div class="field">
|
||||
<div class="control">
|
||||
@@ -49,7 +52,7 @@
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
];
|
||||
window.initCalendar('calendar', { workerId: container.dataset.workerId, leaves: leaves, requestUrl: '{% url "rota:request_leave" %}', leavesUrl: '{% if worker %}{% url "rota:worker_leaves_json" worker.id %}{% endif %}', mode: container.dataset.mode || 'inline' });
|
||||
window.initCalendar('calendar', { workerId: container.dataset.workerId, leaves: leaves, requestUrl: '{% if token %}{% url "rota:request_leave_token" token %}{% else %}{% url "rota:request_leave" %}{% endif %}', leavesUrl: '{% if worker %}{% url "rota:worker_leaves_json" worker.id %}{% endif %}', mode: container.dataset.mode || 'inline' });
|
||||
})();
|
||||
</script>
|
||||
{% endblock %}
|
||||
|
||||
@@ -301,6 +301,9 @@ def worker_detail(request, worker_id):
|
||||
leave = form.save(commit=False)
|
||||
leave.worker = worker
|
||||
leave.save()
|
||||
# For non-HTMX (full-page) submissions just redirect back to the
|
||||
# worker detail page. Token-aware redirects are handled by the
|
||||
# tokenized `request_leave` view (the public token page).
|
||||
return redirect("rota:worker_detail", worker_id=worker.id)
|
||||
else:
|
||||
# Pre-fill dates when `date` query param is provided (ISO YYYY-MM-DD)
|
||||
@@ -512,6 +515,16 @@ def request_leave(request, token=None):
|
||||
# Trigger modal close and a leaveUpdated event so client can refresh calendar highlights
|
||||
response["HX-Trigger"] = "closeModal,leaveUpdated"
|
||||
return response
|
||||
# For full-page submissions: if this request was made using a tokenized
|
||||
# URL (public leave request page), keep the user on that token page so
|
||||
# they can see confirmation and existing requests. Otherwise go to the
|
||||
# worker detail page.
|
||||
if token:
|
||||
try:
|
||||
return redirect(reverse('rota:request_leave_token', args=[token]))
|
||||
except Exception:
|
||||
# fallback to worker detail
|
||||
pass
|
||||
return redirect("rota:worker_detail", worker_id=worker.id)
|
||||
else:
|
||||
# Prefill dates when provided via query params for both full page and HTMX modal
|
||||
|
||||
Reference in New Issue
Block a user