@AppAuthController('knowledge').permission_required('can_add')
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)
dg.glue_model_object(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.services.save_model_obj(author=request.user, **form.cleaned_data)
return HttpResponseRedirect(
reverse(
'django_spire:knowledge:collection:page:detail',
kwargs={'pk': collection.pk}
)
)
show_form_errors(request, form)
else:
form = EntryForm(instance=entry)
return portal_views.form_view(
request,
form=form,
obj=entry,
context_data={
'entry': entry,
'action_url': (
reverse(
'django_spire:knowledge:entry:form:create',
kwargs={'collection_pk': collection_pk}
)
if pk == 0
else reverse(
'django_spire:knowledge:entry:form:update',
kwargs={'pk': pk, 'collection_pk': collection_pk}
)
)
},
template='django_spire/knowledge/entry/page/form_page.html'
)