Skip to content

form_views

django_spire.metric.visual.signage.views.form_views

SIGNAGE_DETAIL_URL = 'django_spire:metric:visual:signage:page:detail' module-attribute

delete_view

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

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

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

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

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

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

create_view

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

update_view

Source code in django_spire/metric/visual/signage/views/form_views.py
@permission_required('django_spire_metric_visual_signage.change_signage')
def update_view(request: WSGIRequest, pk: int) -> TemplateResponse:
    return _form_view(request, pk)
Source code in django_spire/metric/visual/signage/views/form_views.py
@permission_required('django_spire_metric_visual_signage.add_signagepresentation')
def create_link_view(request: WSGIRequest) -> TemplateResponse:
    return _link_form_view(request)
Source code in django_spire/metric/visual/signage/views/form_views.py
@permission_required('django_spire_metric_visual_signage.change_signagepresentation')
def update_link_view(request: WSGIRequest, pk: int) -> TemplateResponse:
    return _link_form_view(request, pk)
Source code in django_spire/metric/visual/signage/views/form_views.py
@permission_required('django_spire_metric_visual_signage.delete_signagepresentation')
def delete_link_view(request: WSGIRequest, pk: int) -> TemplateResponse | HttpResponseRedirect:
    link = get_object_or_404(
        models.SignagePresentation.objects.select_related('signage', 'presentation'), pk=pk
    )
    signage = link.signage
    return_url = request.GET.get('return_url', _signage_detail_url(signage.pk))

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

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

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

    nav = SignageNavigation()
    nav.page_title = 'Delete Presentation'
    _signage_breadcrumbs(nav, signage)
    nav.breadcrumbs.add('Delete')
    context = nav.as_context()
    context['form'] = form
    context['form_title'] = f'Delete {link}'
    context['form_description'] = (
        f'Are you sure you would like to remove presentation "{link.presentation}" from '
        f'signage "{signage}"?'
    )

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