Skip to content

form_views

django_spire.api.views.form_views

access_create_form_view

Source code in django_spire/api/views/form_views.py
@AppAuthController('api').permission_required('can_add')
def access_create_form_view(request: WSGIRequest, pk: int = 0) -> TemplateResponse:
    api_access = get_object_or_null_obj(ApiAccess, pk=pk)

    Glue.model(request, unique_name='api_access', target=api_access, fields='__all__')

    if request.method == 'POST':
        form = forms.ApiAccessCreateForm(request.POST)

        if form.is_valid():
            api_access: ApiAccess = form.save()

            raw_key = uuid4().hex

            api_access.set_key_and_save(raw_key)

            nav = ApiNavigation()
            nav.page_title = 'API Access Created'
            nav.page_description = 'Your API access has been created.'
            nav.breadcrumbs.add('API Access', 'django_spire:api:page:list')
            nav.breadcrumbs.add('Created')
            context = nav.as_context()
            context['api_access'] = api_access
            context['raw_key'] = raw_key
            return TemplateResponse(
                request, 'django_spire/api/page/access_created_page.html', context=context
            )

        show_form_errors(request, form)

    else:
        form = forms.ApiAccessCreateForm(instance=api_access)

    nav = ApiNavigation()
    nav.page_title = api_access._meta.verbose_name.title()
    nav.page_description = 'Create'
    nav.breadcrumbs.add('API Access', 'django_spire:api:page:list')
    nav.breadcrumbs.add('Create')
    context = nav.as_context()
    context['form'] = form
    context['form_title'] = f'Create {api_access._meta.verbose_name.title()}'
    context['form_description'] = ''
    context['form_action_url'] = reverse('django_spire:api:form:create')
    return TemplateResponse(request, 'django_spire/api/page/access_form_page.html', context=context)