Skip to content

form_views

django_spire.knowledge.entry.views.form_views

form_view

Source code in django_spire/knowledge/entry/views/form_views.py
@permission_required('django_spire_knowledge.add_collection')
def form_view(
    request: WSGIRequest, collection_pk: int, pk: int = 0
) -> TemplateResponse | HttpResponseRedirect:
    entry = get_object_or_null_obj(Entry, pk=pk)
    collection = Collection.objects.get(pk=collection_pk)

    Glue.model(request, 'entry', entry, fields=['name'])

    if request.method == 'POST':
        form = EntryForm(request.POST, instance=entry)

        if form.is_valid():
            form.cleaned_data['collection'] = collection
            entry, _ = entry.services.save_model_obj(author=request.user, **form.cleaned_data)

            return HttpResponseRedirect(
                reverse('django_spire:knowledge:entry:version:page:editor', kwargs={'pk': entry.pk})
            )

        show_form_errors(request, form)
    else:
        form = EntryForm(instance=entry)

    nav = EntryNavigation()
    nav.page_title = 'Entry'
    nav.page_description = 'Edit' if pk else 'Create'

    add_collection_chain_breadcrumbs(nav.breadcrumbs, collection)

    if entry.name:
        nav.breadcrumbs.add(str(entry))

    nav.breadcrumbs.add_model_instance_form_action(entry)

    return TemplateResponse(
        request,
        context=nav.as_context() | {
            'form': form,
            'entry': entry,
            'action_url': (
                reverse(
                    'django_spire:knowledge:entry:form:create',
                    kwargs={'collection_pk': collection_pk},
                )
                if not entry.pk
                else reverse(
                    'django_spire:knowledge:entry:form:update',
                    kwargs={'collection_pk': collection_pk, 'pk': entry.pk},
                )
            ),
        },
        template='django_spire/knowledge/entry/page/form_page.html',
    )

import_form_view

Source code in django_spire/knowledge/entry/views/form_views.py
@permission_required('django_spire_knowledge.add_collection')
def import_form_view(
    request: WSGIRequest,
    collection_pk: int
) -> TemplateResponse | HttpResponseRedirect:
    collection = get_object_or_null_obj(Collection, pk=collection_pk)

    nav = EntryNavigation()
    nav.page_title = 'Import Files'
    nav.page_description = 'Import Files'
    add_collection_chain_breadcrumbs(nav.breadcrumbs, collection)
    nav.breadcrumbs.add('Import Files')

    Glue.form(
        request,
        'import_file_form',
        EntryFilesForm(initial={'collection_pk': collection_pk}),
    )

    supported_file_types = ['.' + file_type for file_type in list(FILE_TYPE_CONVERTER_MAP.keys())]
    return TemplateResponse(
        request,
        context=nav.as_context() | {
            'collection_pk': collection_pk,
            'supported_file_types': supported_file_types,
            'supported_file_types_verbose': ', '.join(supported_file_types),
        },
        template='django_spire/knowledge/entry/page/import_form_page.html',
    )