Skip to content

form_views

django_spire.auth.group.views.form_views

form_view

Source code in django_spire/auth/group/views/form_views.py
@permission_required('django_spire_auth_group.change_authgroup')
def form_view(request: WSGIRequest, pk: int = 0) -> TemplateResponse | HttpResponseRedirect:
    group = get_object_or_null_obj(models.AuthGroup, pk=pk)

    if request.method == 'POST':
        form = forms.GroupForm(request.POST, instance=group)

        if form.is_valid():
            group = form.save()

            return_url = reverse('django_spire:auth:group:page:list')
            return HttpResponseRedirect(return_url)

        show_form_errors(request, form)

    form = forms.GroupForm(instance=group)

    nav = AuthGroupNavigation()
    nav.set_page_title_from_model_name(group)
    nav.page_description = 'Edit' if group.pk else 'Create'
    if group.pk:
        nav.breadcrumbs.add_model_instance_string(
            group, view_name='django_spire:auth:group:page:detail', view_kwargs={'pk': group.pk}
        )
    nav.breadcrumbs.add('Edit' if group.pk else 'Create')

    context = nav.as_context()
    context['form'] = form
    context['group'] = group
    return TemplateResponse(
        request, context=context, template='django_spire/auth/group/page/form_page.html'
    )

user_form_view

Source code in django_spire/auth/group/views/form_views.py
@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)

            return_url = reverse('django_spire:auth:group:page:detail', kwargs={'pk': pk})
            return HttpResponseRedirect(return_url)

        show_form_errors(request, form)

    form = forms.GroupUserForm()

    nav = AuthGroupNavigation()
    nav.page_title = 'Group'
    nav.page_description = 'Edit Users'
    nav.breadcrumbs.add_model_instance_string(
        group, view_name='django_spire:auth:group:page:detail', view_kwargs={'pk': group.pk}
    )
    nav.breadcrumbs.add('Edit Users')

    context = nav.as_context()
    context['form'] = form
    context['group'] = group
    context['user_choices'] = user_choices
    context['selected_user_ids'] = selected_user_ids
    return TemplateResponse(
        request, context=context, template='django_spire/auth/group/page/group_user_form_page.html'
    )

delete_form_view

Source code in django_spire/auth/group/views/form_views.py
@permission_required('django_spire_auth_group.delete_authgroup')
def delete_form_view(request: WSGIRequest, pk: int) -> TemplateResponse:
    group = get_object_or_404(models.AuthGroup, pk=pk)
    return_url = reverse('django_spire:auth:group:page:list')

    if request.method == 'POST':
        form = DeleteConfirmationForm(data=request.POST, obj=group)

        if form.is_valid():
            if form.cleaned_data['should_delete']:
                group.delete()

            return HttpResponseRedirect(return_url)
    else:
        form = DeleteConfirmationForm(obj=group)

    nav = AuthGroupNavigation()
    nav.page_title = 'Delete Group'
    nav.breadcrumbs.add('Groups', 'django_spire:auth:group:page:list')
    nav.breadcrumbs.add_model_instance_string(
        group, view_name='django_spire:auth:group:page:detail', view_kwargs={'pk': group.pk}
    )
    nav.breadcrumbs.add('Delete')

    context = nav.as_context()
    context['form'] = form
    context['form_title'] = f'Delete {group}'
    context['form_description'] = f'Are you sure you would like to delete group "{group}"?'
    return TemplateResponse(
        request,
        context=context,
        template='django_spire/page/delete_confirmation_form_page.html',
    )

group_remove_user_form_view

Source code in django_spire/auth/group/views/form_views.py
@permission_required('django_spire_auth_group.delete_authgroup')
def group_remove_user_form_view(
    request: WSGIRequest, group_pk: int, pk: int
) -> HttpResponseRedirect | TemplateResponse:
    group = get_object_or_404(models.AuthGroup, pk=group_pk)
    user = get_object_or_404(AuthUser, pk=pk)

    if request.method == 'POST':
        form = DeleteConfirmationForm(request.POST, obj=user)

        if form.is_valid():
            group.user_set.remove(user)

            return HttpResponseRedirect(
                reverse('django_spire:auth:group:page:detail', kwargs={'pk': group_pk})
            )

    form = DeleteConfirmationForm(request.GET, obj=user)

    nav = AuthGroupNavigation()
    nav.page_title = 'Group'
    nav.page_description = f'Remove {user.get_full_name()} from'
    nav.breadcrumbs.add('Groups', 'django_spire:auth:group:page:list')
    nav.breadcrumbs.add_model_instance_string(
        group, view_name='django_spire:auth:group:page:detail', view_kwargs={'pk': group.pk}
    )
    nav.breadcrumbs.add(user.get_full_name())
    nav.breadcrumbs.add('Remove')

    context = nav.as_context()
    context['form'] = form
    return TemplateResponse(
        request,
        context=context,
        template='django_spire/page/delete_confirmation_form_page.html',
    )