@permission_required('django_spire_auth_group.add_authgroup')
def user_form_view(
request: WSGIRequest,
pk: int
) -> TemplateResponse | HttpResponseRedirect:
group = get_object_or_404(models.AuthGroup, pk=pk)
user_choices = AuthUser.services.get_user_choices()
selected_user_ids = list(
AuthUser.objects
.filter(groups=group)
.values_list('id', flat=True)
.distinct()
)
if request.method == 'POST':
form = forms.GroupUserForm(data=request.POST)
if form.is_valid():
user_list = form.cleaned_data.get('users')
set_group_users(group, user_list)
group.add_activity(
user=request.user,
verb='added',
information=(
f'{request.user.get_full_name()} added {len(user_list)} users to '
f'the group "{group.name}".'
)
)
return_url = reverse('django_spire:auth:group:page:detail', kwargs={'pk': pk})
return HttpResponseRedirect(return_url)
else:
show_form_errors(request, form)
form = forms.GroupUserForm()
def crumbs(breadcrumbs) -> None:
breadcrumbs.add_breadcrumb(name='Edit Users')
context_data = {
'group': group,
'user_choices': user_choices,
'selected_user_ids': selected_user_ids
}
return portal_views.form_view(
request,
form=form,
obj=group,
template='django_spire/auth/group/page/group_user_form_page.html',
context_data=context_data,
breadcrumbs_func=crumbs,
)