Skip to content

form_views

django_spire.metric.visual.presentation.views.form_views

PRESENTATION_DETAIL_URL = 'django_spire:metric:visual:presentation:page:detail' module-attribute

delete_view

Source code in django_spire/metric/visual/presentation/views/form_views.py
@permission_required('django_spire_metric_visual_presentation.delete_presentation')
def delete_view(request: WSGIRequest, pk: int) -> TemplateResponse | HttpResponseRedirect:
    presentation = get_object_or_404(models.Presentation, pk=pk)
    return_url = request.GET.get(
        'return_url', reverse('django_spire:metric:visual:presentation:page:list')
    )

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

        if form.is_valid():
            if form.cleaned_data['should_delete']:
                presentation.set_deleted()
                presentation.add_activity(
                    user=request.user,
                    verb='deleted',
                    information=(
                        f'{request.user.get_full_name()} deleted presentation "{presentation}".'
                    ),
                )

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

    nav = PresentationNavigation()
    nav.page_title = 'Delete Presentation'
    nav.breadcrumbs.add('Presentations', 'django_spire:metric:visual:presentation:page:list')
    nav.breadcrumbs.add(str(presentation))
    nav.breadcrumbs.add('Delete')
    context = nav.as_context()
    context['form'] = form
    context['form_title'] = f'Delete {presentation}'
    context['form_description'] = (
        f'Are you sure you would like to delete presentation "{presentation}"?'
    )

    return TemplateResponse(
        request, 'django_spire/page/delete_confirmation_form_page.html', context
    )

create_view

Source code in django_spire/metric/visual/presentation/views/form_views.py
@permission_required('django_spire_metric_visual_presentation.add_presentation')
def create_view(request: WSGIRequest) -> TemplateResponse:
    return _form_view(request)

update_view

Source code in django_spire/metric/visual/presentation/views/form_views.py
@permission_required('django_spire_metric_visual_presentation.change_presentation')
def update_view(request: WSGIRequest, pk: int) -> TemplateResponse:
    return _form_view(request, pk)

create_slide_view

Source code in django_spire/metric/visual/presentation/views/form_views.py
@permission_required('django_spire_metric_visual_presentation.add_slide')
def create_slide_view(request: WSGIRequest) -> TemplateResponse:
    return _slide_form_view(request)

update_slide_view

Source code in django_spire/metric/visual/presentation/views/form_views.py
@permission_required('django_spire_metric_visual_presentation.change_slide')
def update_slide_view(request: WSGIRequest, pk: int) -> TemplateResponse:
    return _slide_form_view(request, pk)

delete_slide_view

Source code in django_spire/metric/visual/presentation/views/form_views.py
@permission_required('django_spire_metric_visual_presentation.delete_slide')
def delete_slide_view(request: WSGIRequest, pk: int) -> TemplateResponse | HttpResponseRedirect:
    slide = get_object_or_404(models.Slide.objects.select_related('presentation'), pk=pk)
    presentation = slide.presentation
    return_url = request.GET.get('return_url', _presentation_detail_url(presentation.pk))

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

        if form.is_valid():
            if form.cleaned_data['should_delete']:
                slide.set_deleted()
                slide.add_activity(
                    user=request.user,
                    verb='deleted',
                    information=(
                        f'{request.user.get_full_name()} deleted slide "{slide}" from '
                        f'presentation "{presentation}".'
                    ),
                )

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

    nav = PresentationNavigation()
    nav.page_title = 'Delete Slide'
    nav.breadcrumbs.add('Presentations', 'django_spire:metric:visual:presentation:page:list')
    nav.breadcrumbs.add(str(presentation), PRESENTATION_DETAIL_URL, {'pk': presentation.pk})
    nav.breadcrumbs.add(str(slide))
    nav.breadcrumbs.add('Delete')
    context = nav.as_context()
    context['form'] = form
    context['form_title'] = f'Delete {slide}'
    context['form_description'] = f'Are you sure you would like to delete slide "{slide}"?'

    return TemplateResponse(
        request, 'django_spire/page/delete_confirmation_form_page.html', context
    )

create_section_view

Source code in django_spire/metric/visual/presentation/views/form_views.py
@permission_required('django_spire_metric_visual_presentation.add_slidesection')
def create_section_view(request: WSGIRequest) -> TemplateResponse:
    return _section_form_view(request)

update_section_view

Source code in django_spire/metric/visual/presentation/views/form_views.py
@permission_required('django_spire_metric_visual_presentation.change_slidesection')
def update_section_view(request: WSGIRequest, pk: int) -> TemplateResponse:
    return _section_form_view(request, pk)

delete_section_view

Source code in django_spire/metric/visual/presentation/views/form_views.py
@permission_required('django_spire_metric_visual_presentation.delete_slidesection')
def delete_section_view(request: WSGIRequest, pk: int) -> TemplateResponse | HttpResponseRedirect:
    section = get_object_or_404(
        models.SlideSection.objects.select_related('slide__presentation'), pk=pk
    )
    slide = section.slide
    presentation = slide.presentation
    return_url = request.GET.get('return_url', _presentation_detail_url(presentation.pk))

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

        if form.is_valid():
            if form.cleaned_data['should_delete']:
                section.set_deleted()
                section.add_activity(
                    user=request.user,
                    verb='deleted',
                    information=(
                        f'{request.user.get_full_name()} deleted section "{section}" from '
                        f'slide "{slide}".'
                    ),
                )

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

    nav = PresentationNavigation()
    nav.page_title = 'Delete Section'
    nav.breadcrumbs.add('Presentations', 'django_spire:metric:visual:presentation:page:list')
    nav.breadcrumbs.add(str(presentation), PRESENTATION_DETAIL_URL, {'pk': presentation.pk})
    nav.breadcrumbs.add(str(slide))
    nav.breadcrumbs.add('Delete')
    context = nav.as_context()
    context['form'] = form
    context['form_title'] = f'Delete {section}'
    context['form_description'] = f'Are you sure you would like to delete section "{section}"?'

    return TemplateResponse(
        request, 'django_spire/page/delete_confirmation_form_page.html', context
    )