@permission_required('django_spire_metric_visual.delete_visual')
def delete_view(request: WSGIRequest, pk: int) -> TemplateResponse | HttpResponseRedirect:
visual = get_object_or_404(models.Visual, pk=pk)
return_url = request.GET.get('return_url', reverse('django_spire:metric:visual:page:list'))
if request.method == 'POST':
form = DeleteConfirmationForm(data=request.POST, obj=visual)
if form.is_valid():
if form.cleaned_data['should_delete']:
visual.set_deleted()
visual.add_activity(
user=request.user,
verb='deleted',
information=f'{request.user.get_full_name()} deleted visual "{visual}".',
)
return HttpResponseRedirect(return_url)
else:
form = DeleteConfirmationForm(obj=visual)
nav = VisualNavigation()
nav.page_title = 'Delete Visual'
nav.breadcrumbs.add('Visuals', 'django_spire:metric:visual:page:list')
nav.breadcrumbs.add(str(visual))
nav.breadcrumbs.add('Delete')
context = nav.as_context()
context['form'] = form
context['form_title'] = f'Delete {visual}'
context['form_description'] = f'Are you sure you would like to delete visual "{visual}"?'
return TemplateResponse(
request, 'django_spire/page/delete_confirmation_form_page.html', context
)