Extract context information from the OPTIONS request (forms.js)

This commit is contained in:
Oliver Walters 2022-05-04 15:31:33 +10:00
parent 4e7d1d8e7f
commit e527ddcc86
2 changed files with 12 additions and 7 deletions

View File

@ -43,10 +43,7 @@ class InvenTreeMetadata(SimpleMetadata):
Custom context information to pass through to the OPTIONS endpoint,
if the "context=True" is supplied to the OPTIONS requst
Serializer class can supply either:
- get_context_data() (method)
- CONTEXT_DATA (dict)
Serializer class can supply context data by defining a get_context_data() method (no arguments)
"""
context = {}
@ -55,8 +52,6 @@ class InvenTreeMetadata(SimpleMetadata):
if hasattr(self.serializer, 'get_context_data'):
context = self.serializer.get_context_data()
elif hasattr(self.erializer, 'CONTEXT_DATA'):
context = self.serializer.CONTEXT_DATA
metadata['context'] = context

View File

@ -338,6 +338,9 @@ function constructForm(url, options) {
// Request OPTIONS endpoint from the API
getApiEndpointOptions(url, function(OPTIONS) {
// Extract any custom 'context' information from the OPTIONS data
options.context = OPTIONS.context || {};
/*
* Determine what "type" of form we want to construct,
* based on the requested action.
@ -530,7 +533,14 @@ function constructFormBody(fields, options) {
$(modal).find('#form-content').html(html);
if (options.preFormContent) {
$(modal).find('#pre-form-content').html(options.preFormContent);
if (typeof(options.preFormContent) === 'function') {
var content = options.preFormContent(options);
} else {
var content = options.preFormContent;
}
$(modal).find('#pre-form-content').html(content);
}
if (options.postFormContent) {