Skip to content

form_views

django_spire.knowledge.entry.version.views.form_views

update_form_view

Source code in django_spire/knowledge/entry/version/views/form_views.py
@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',
    )