snapshot: preserve request status retry and i18n labels

This commit is contained in:
Md Bayazid Bostame
2026-03-25 20:42:01 +01:00
parent a8f7eadbc6
commit 197bd3c226
10 changed files with 851 additions and 583 deletions

View File

@@ -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')