@permission_required('django_spire_metric_visual_signage.delete_signagepresentation')
def delete_link_view(request: WSGIRequest, pk: int) -> TemplateResponse | HttpResponseRedirect:
link = get_object_or_404(
models.SignagePresentation.objects.select_related('signage', 'presentation'), pk=pk
)
signage = link.signage
return_url = request.GET.get('return_url', _signage_detail_url(signage.pk))
if request.method == 'POST':
form = DeleteConfirmationForm(data=request.POST, obj=link)
if form.is_valid():
if form.cleaned_data['should_delete']:
link.set_deleted()
link.add_activity(
user=request.user,
verb='deleted',
information=(
f'{request.user.get_full_name()} removed presentation '
f'"{link.presentation}" from signage "{signage}".'
),
)
return HttpResponseRedirect(return_url)
else:
form = DeleteConfirmationForm(obj=link)
nav = SignageNavigation()
nav.page_title = 'Delete Presentation'
_signage_breadcrumbs(nav, signage)
nav.breadcrumbs.add('Delete')
context = nav.as_context()
context['form'] = form
context['form_title'] = f'Delete {link}'
context['form_description'] = (
f'Are you sure you would like to remove presentation "{link.presentation}" from '
f'signage "{signage}"?'
)
return TemplateResponse(
request, 'django_spire/page/delete_confirmation_form_page.html', context
)