Add downsample series functionality and related UI updates

- Implemented asynchronous downsample task for series with progress tracking.
- Added new URL endpoint for downsample status.
- Updated Series model to include source_series_instance_uid.
- Enhanced case display template with new buttons for series actions.
- Added password reset functionality in user profile with appropriate alerts.
- Created migration for new source_series_instance_uid field in Series model.
This commit is contained in:
Ross
2026-05-18 16:20:38 +01:00
parent c55797636a
commit 63ea4cdf23
12 changed files with 606 additions and 294 deletions
+20 -2
View File
@@ -104,13 +104,31 @@
<div class="alert alert-danger py-2" role="alert">Cannot link supervisor account: email is already linked to another user.</div>
{% endif %}
<a class="btn btn-outline-primary d-block mb-2" href="{% url 'password_change' %}">Change password</a>
{% if password_reset_action == 'sent' %}
<div class="alert alert-success py-2" role="alert">Password reset email sent.</div>
{% elif password_reset_action == 'no_email' %}
<div class="alert alert-warning py-2" role="alert">Cannot send password reset: user has no email address.</div>
{% elif password_reset_action == 'inactive' %}
<div class="alert alert-warning py-2" role="alert">Cannot send password reset: user account is inactive.</div>
{% elif password_reset_action == 'invalid' %}
<div class="alert alert-danger py-2" role="alert">Cannot send password reset: email address is invalid.</div>
{% elif password_reset_action == 'error' %}
<div class="alert alert-danger py-2" role="alert">Password reset email could not be sent.</div>
{% endif %}
<a class="btn btn-outline-primary d-block mb-2" href="{% url 'password_change' %}" id="password-change">Change password</a>
{% if request.user|has_group:"cid_user_manager" %}
<a class="btn btn-outline-secondary d-block mb-2" href="{% url 'account_update' user.username %}">Update user details</a>
{% endif %}
<a class="btn btn-primary d-block mb-2" href="{% url 'account_profile_update' user.username %}">Edit profile</a>
<a class="btn btn-primary d-block mb-2" href="{% url 'account_profile_update' user.username %}" id="update-profile-link">Edit profile</a>
{% if request.user.is_superuser or is_cid_user_manager %}
<form method="post" action="{% url 'account_send_password_reset' user.username %}" class="mb-2">
{% csrf_token %}
<input type="hidden" name="next" value="{{ request.get_full_path }}">
<button type="submit" class="btn btn-outline-warning d-block w-100">Send password reset link</button>
</form>
{% if not supervisor_account %}
<form method="post" action="{% url 'account_set_supervisor' user.username %}" class="mb-2">
{% csrf_token %}