@AppAuthController('knowledge').permission_required('can_add')
def form_view(
request: WSGIRequest,
pk: int = 0
) -> TemplateResponse | HttpResponseRedirect:
collection = get_object_or_null_obj(Collection, pk=pk)
dg.glue_model_object(request, unique_name='collection', model_object=collection)
dg.glue_query_set(
request,
unique_name='collections',
target=Collection.objects.active().user_has_access(request.user),
fields=['name']
)
dg.glue_query_set(
request,
unique_name='group_query_set',
target=AuthGroup.objects.all(),
fields=['name']
)
if request.method == 'POST':
form = CollectionForm(request.POST, instance=collection)
if form.is_valid():
collection, _ = collection.services.save_model_obj(**form.cleaned_data)
_ = CollectionGroup.services.factory.replace_groups(
request=request,
group_pks=dict(request.POST).get('groups'),
collection=collection,
)
return HttpResponseRedirect(
reverse('django_spire:knowledge:collection:page:list')
)
show_form_errors(request, form)
else:
form = CollectionForm(instance=collection)
return portal_views.form_view(
request,
form=form,
obj=collection,
context_data={
'collection': collection,
'group_ids': list(
collection.groups.all().values_list('auth_group_id', flat=True)
) if collection.id else [],
},
template='django_spire/knowledge/collection/page/form_page.html'
)