@permission_required('django_spire_knowledge.delete_collection')
def delete_view(request: WSGIRequest, pk: int) -> TemplateResponse:
collection = get_object_or_404(Collection, pk=pk)
if collection.parent:
return_url = request.GET.get(
'return_url',
reverse(
'django_spire:knowledge:collection:page:top_level',
kwargs={'pk': collection.parent_id},
),
)
else:
return_url = request.GET.get('return_url', reverse('django_spire:knowledge:page:home'))
if request.method == 'POST':
form = DeleteConfirmationForm(data=request.POST, obj=collection)
if form.is_valid():
collection.set_deleted()
return HttpResponseRedirect(return_url)
else:
form = DeleteConfirmationForm(obj=collection)
nav = CollectionNavigation()
nav.page_title = 'Delete Collection'
add_collection_chain_breadcrumbs(nav.breadcrumbs, collection)
nav.breadcrumbs.add('Delete')
return TemplateResponse(
request,
context=nav.as_context() | {
'form': form,
'form_title': f'Delete {collection}',
'form_description': (
f'Are you sure you would like to delete collection "{collection}"?'
),
},
template='django_spire/knowledge/collection/form/delete_confirmation_form_page.html',
)