Improve form support for view supplements
this seems a bit hacky yet but works for now.. cf. field logic for Vendor -> Quickbooks Bank Accounts, which requires this
This commit is contained in:
parent
c35c0f8b61
commit
0d9c5a078b
3 changed files with 55 additions and 7 deletions
|
@ -338,7 +338,7 @@ class Form(object):
|
|||
assume_local_times=False, renderers=None, renderer_kwargs={},
|
||||
hidden={}, widgets={}, defaults={}, validators={}, required={}, helptext={}, focus_spec=None,
|
||||
action_url=None, cancel_url=None, component='tailbone-form',
|
||||
vuejs_component_kwargs=None, vuejs_field_converters={},
|
||||
vuejs_component_kwargs=None, vuejs_field_converters={}, json_data={}, included_templates={},
|
||||
# TODO: ugh this is getting out hand!
|
||||
can_edit_help=False, edit_help_url=None, route_prefix=None,
|
||||
):
|
||||
|
@ -381,6 +381,8 @@ class Form(object):
|
|||
self.component = component
|
||||
self.vuejs_component_kwargs = vuejs_component_kwargs or {}
|
||||
self.vuejs_field_converters = vuejs_field_converters or {}
|
||||
self.json_data = json_data or {}
|
||||
self.included_templates = included_templates or {}
|
||||
self.can_edit_help = can_edit_help
|
||||
self.edit_help_url = edit_help_url
|
||||
self.route_prefix = route_prefix
|
||||
|
@ -966,6 +968,30 @@ class Form(object):
|
|||
kwargs.setdefault(':configure-fields-help', 'configureFieldsHelp')
|
||||
return HTML.tag(self.component, **kwargs)
|
||||
|
||||
def set_json_data(self, key, value):
|
||||
"""
|
||||
Establish a data value for use in client-side JS. This value
|
||||
will be JSON-encoded and made available to the
|
||||
`<tailbone-form>` component within the client page.
|
||||
"""
|
||||
self.json_data[key] = value
|
||||
|
||||
def include_template(self, template, context):
|
||||
"""
|
||||
Declare a JS template as required by the current form. This
|
||||
template will then be included in the final page, so all
|
||||
widgets behave correctly.
|
||||
"""
|
||||
self.included_templates[template] = context
|
||||
|
||||
def render_included_templates(self):
|
||||
templates = []
|
||||
for template, context in self.included_templates.items():
|
||||
context = dict(context)
|
||||
context['form'] = self
|
||||
templates.append(HTML.literal(render(template, context)))
|
||||
return HTML.literal('\n').join(templates)
|
||||
|
||||
def render_field_complete(self, fieldname, bfield_attrs={}):
|
||||
"""
|
||||
Render the given field completely, i.e. with ``<b-field>``
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue