Refactor "receive row" and "declare credit" tools per buefy theme

This commit is contained in:
Lance Edgar 2021-12-08 19:44:50 -06:00
parent ae76ceea04
commit 10e34b83ed
10 changed files with 313 additions and 89 deletions

View file

@ -343,8 +343,9 @@ class Form(object):
model_instance=None, model_class=None, appstruct=UNSPECIFIED, nodes={}, enums={}, labels={},
assume_local_times=False, renderers=None,
hidden={}, widgets={}, defaults={}, validators={}, required={}, helptext={}, focus_spec=None,
action_url=None, cancel_url=None, use_buefy=None, component='tailbone-form'):
action_url=None, cancel_url=None, use_buefy=None, component='tailbone-form',
vuejs_field_converters={},
):
self.fields = None
if fields is not None:
self.set_fields(fields)
@ -380,6 +381,7 @@ class Form(object):
self.cancel_url = cancel_url
self.use_buefy = use_buefy
self.component = component
self.vuejs_field_converters = vuejs_field_converters or {}
@property
def component_studly(self):
@ -702,6 +704,9 @@ class Form(object):
"""
return self.helptext[key]
def set_vuejs_field_converter(self, field, converter):
self.vuejs_field_converters[field] = converter
def render(self, template=None, **kwargs):
if not template:
if self.readonly and not self.use_buefy:
@ -788,6 +793,11 @@ class Form(object):
model value for the given field. This JS will be written as part of
the overall response, to be interpreted on the client side.
"""
if field.name in self.vuejs_field_converters:
convert = self.vuejs_field_converters[field.name]
value = convert(field.cstruct)
return json.dumps(value)
if isinstance(field.schema.typ, deform.FileData):
# TODO: we used to always/only return 'null' here but hopefully
# this also works, to show existing filename when present
@ -807,6 +817,16 @@ class Form(object):
except Exception as error:
raise TailboneJSONFieldError(field.name, error)
def get_error_messages(self, field):
if field.error:
return field.error.messages()
error = self.make_deform_form().error
if error:
if isinstance(error, colander.Invalid):
if error.node.name == field.name:
return error.messages()
def messages_json(self, messages):
dump = json.dumps(messages)
dump = dump.replace("'", ''')