snapshot: preserve request status retry and i18n labels
This commit is contained in:
@@ -147,6 +147,16 @@ def _form_field_labels(form_type: str) -> dict[str, str]:
|
||||
return {}
|
||||
|
||||
|
||||
def _request_status_label(status_key: str) -> str:
|
||||
labels = {
|
||||
'submitted': _('Eingereicht'),
|
||||
'processing': _('In Bearbeitung'),
|
||||
'completed': _('Abgeschlossen'),
|
||||
'failed': _('Fehlgeschlagen'),
|
||||
}
|
||||
return labels.get(status_key, status_key)
|
||||
|
||||
|
||||
def _translate_choice_list(choices):
|
||||
return [(value, str(label)) for value, label in choices]
|
||||
|
||||
@@ -383,7 +393,9 @@ def requests_dashboard(request):
|
||||
'pdf_url': f"/media/pdfs/{Path(obj.generated_pdf_path).name}" if obj.generated_pdf_path else None,
|
||||
'intro_pdf_url': f"/media/pdfs/{Path(obj.intro_pdf_path).name}" if obj.intro_pdf_path else None,
|
||||
'intro_session': intro_session,
|
||||
'status': 'PDF erstellt' if obj.generated_pdf_path else 'In Bearbeitung',
|
||||
'status': _request_status_label(obj.processing_status),
|
||||
'status_key': obj.processing_status,
|
||||
'last_error': obj.last_error,
|
||||
}
|
||||
)
|
||||
for obj in offboarding_items:
|
||||
@@ -398,7 +410,9 @@ def requests_dashboard(request):
|
||||
'pdf_url': f"/media/pdfs/{Path(obj.generated_pdf_path).name}" if obj.generated_pdf_path else None,
|
||||
'intro_pdf_url': None,
|
||||
'intro_session': None,
|
||||
'status': 'PDF erstellt' if obj.generated_pdf_path else 'In Bearbeitung',
|
||||
'status': _request_status_label(obj.processing_status),
|
||||
'status_key': obj.processing_status,
|
||||
'last_error': obj.last_error,
|
||||
}
|
||||
)
|
||||
|
||||
@@ -1682,3 +1696,29 @@ def delete_request_from_dashboard(request, kind: str, request_id: int):
|
||||
_audit(request, 'request_deleted', target_type=kind, target_id=request_id, target_label=str(obj))
|
||||
messages.success(request, f'{kind.capitalize()}-Anfrage #{request_id} wurde gelöscht.')
|
||||
return redirect('requests_dashboard')
|
||||
|
||||
|
||||
@login_required
|
||||
@user_passes_test(_is_staff)
|
||||
@require_POST
|
||||
def retry_request_from_dashboard(request, kind: str, request_id: int):
|
||||
if kind == 'onboarding':
|
||||
obj = get_object_or_404(OnboardingRequest, id=request_id)
|
||||
obj.processing_status = 'submitted'
|
||||
obj.last_error = ''
|
||||
obj.save(update_fields=['processing_status', 'last_error'])
|
||||
process_onboarding_request.delay(obj.id)
|
||||
_audit(request, 'request_retried', target_type='onboarding', target_id=obj.id, target_label=obj.full_name)
|
||||
elif kind == 'offboarding':
|
||||
obj = get_object_or_404(OffboardingRequest, id=request_id)
|
||||
obj.processing_status = 'submitted'
|
||||
obj.last_error = ''
|
||||
obj.save(update_fields=['processing_status', 'last_error'])
|
||||
process_offboarding_request.delay(obj.id)
|
||||
_audit(request, 'request_retried', target_type='offboarding', target_id=obj.id, target_label=obj.full_name)
|
||||
else:
|
||||
messages.error(request, f'Unbekannter Typ: {kind}')
|
||||
return redirect('requests_dashboard')
|
||||
|
||||
messages.success(request, f'{kind.capitalize()}-Anfrage #{request_id} wurde erneut angestoßen.')
|
||||
return redirect('requests_dashboard')
|
||||
|
||||
Reference in New Issue
Block a user