@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)