@AppAuthController('knowledge').permission_required('can_change')
def update_form_view(request: WSGIRequest, pk: int) -> TemplateResponse:
current_version = get_object_or_404(EntryVersion, pk=pk)
entry = current_version.entry
version_blocks = current_version.blocks.active().order_by('order')
if version_blocks.count() == 0:
version_blocks = [
EntryVersionBlock.services.factory.create_blank_block(
entry_version=current_version,
block_type=BlockTypeChoices.TEXT,
order=0
)
]
breadcrumbs = Breadcrumbs()
breadcrumbs.add_breadcrumb(name='Knowledge')
breadcrumbs.add_breadcrumb(
name='Collections',
href=reverse('django_spire:knowledge:collection:page:list')
)
breadcrumbs.add_breadcrumb(
name=entry.collection.name,
href=reverse(
'django_spire:knowledge:collection:page:detail',
kwargs={'pk': entry.collection_id}
)
)
breadcrumbs.add_breadcrumb(
name=f'View {entry.name}',
href=reverse(
'django_spire:knowledge:entry:version:page:detail',
kwargs={'pk': entry.current_version_id}
)
)
breadcrumbs.add_breadcrumb(name=f'Edit {entry.name}')
return portal_views.template_view(
request,
page_title=f'Edit {entry.name}',
page_description=f'Edit {entry.name}',
breadcrumbs=breadcrumbs,
context_data={
'entry': entry,
'current_version': current_version,
'version_blocks_json': EntryVersionBlock.services.transformation.objects_to_json(
objects=version_blocks
),
'version_blocks': version_blocks,
'block_types': BlockTypeChoices,
},
template='django_spire/knowledge/entry/version/page/form_page.html',
)