Refactor field configuration in
add_new_custom_field function
This commit is contained in:
parent
e269fdf986
commit
8324c40074
1 changed files with 19 additions and 2 deletions
|
|
@ -128,7 +128,7 @@ def add_new_custom_field(
|
||||||
advanced=field_advanced,
|
advanced=field_advanced,
|
||||||
placeholder=placeholder,
|
placeholder=placeholder,
|
||||||
display_name=display_name,
|
display_name=display_name,
|
||||||
**field_config,
|
**sanitize_field_config(field_config),
|
||||||
)
|
)
|
||||||
template.get("template")[field_name] = new_field.to_dict()
|
template.get("template")[field_name] = new_field.to_dict()
|
||||||
template.get("custom_fields")[field_name] = None
|
template.get("custom_fields")[field_name] = None
|
||||||
|
|
@ -136,6 +136,13 @@ def add_new_custom_field(
|
||||||
return template
|
return template
|
||||||
|
|
||||||
|
|
||||||
|
def sanitize_field_config(field_config: Dict):
|
||||||
|
# If any of the already existing keys are in field_config, remove them
|
||||||
|
for key in ["name", "field_type", "value", "required", "placeholder", "display_name", "advanced", "show"]:
|
||||||
|
field_config.pop(key, None)
|
||||||
|
return field_config
|
||||||
|
|
||||||
|
|
||||||
# TODO: Move to correct place
|
# TODO: Move to correct place
|
||||||
def add_code_field(template, raw_code, field_config):
|
def add_code_field(template, raw_code, field_config):
|
||||||
# Field with the Python code to allow update
|
# Field with the Python code to allow update
|
||||||
|
|
@ -223,7 +230,10 @@ def build_field_config(
|
||||||
try:
|
try:
|
||||||
build_config: Dict = custom_class(user_id=user_id).build_config()
|
build_config: Dict = custom_class(user_id=user_id).build_config()
|
||||||
|
|
||||||
for field_name, field_dict in build_config.items():
|
for field_name, field in build_config.items():
|
||||||
|
# Allow user to build TemplateField as well
|
||||||
|
# as a dict with the same keys as TemplateField
|
||||||
|
field_dict = get_field_dict(field)
|
||||||
if update_field is not None and field_name != update_field:
|
if update_field is not None and field_name != update_field:
|
||||||
continue
|
continue
|
||||||
try:
|
try:
|
||||||
|
|
@ -245,6 +255,13 @@ def build_field_config(
|
||||||
) from exc
|
) from exc
|
||||||
|
|
||||||
|
|
||||||
|
def get_field_dict(field):
|
||||||
|
"""Get the field dictionary from a TemplateField or a dict"""
|
||||||
|
if isinstance(field, TemplateField):
|
||||||
|
return field.model_dump(by_alias=True, exclude_none=True)
|
||||||
|
return field
|
||||||
|
|
||||||
|
|
||||||
def update_field_dict(field_dict):
|
def update_field_dict(field_dict):
|
||||||
"""Update the field dictionary by calling options() or value() if they are callable"""
|
"""Update the field dictionary by calling options() or value() if they are callable"""
|
||||||
if "options" in field_dict and callable(field_dict["options"]):
|
if "options" in field_dict and callable(field_dict["options"]):
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue