fix default custom field value not being used if blank value is present on model. Fixes #501
This commit is contained in:
parent
9feb76ca81
commit
2d1863031c
|
@ -388,7 +388,7 @@ class TestScriptViews(TacticalTestCase):
|
||||||
)
|
)
|
||||||
|
|
||||||
# test with set value
|
# test with set value
|
||||||
baker.make(
|
value = baker.make(
|
||||||
"clients.SiteCustomField",
|
"clients.SiteCustomField",
|
||||||
field=field,
|
field=field,
|
||||||
site=agent.site,
|
site=agent.site,
|
||||||
|
@ -399,6 +399,24 @@ class TestScriptViews(TacticalTestCase):
|
||||||
Script.parse_script_args(agent=agent, shell="python", args=args),
|
Script.parse_script_args(agent=agent, shell="python", args=args),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# test with set but empty field value
|
||||||
|
value.string_value = "" # type: ignore
|
||||||
|
value.save() # type: ignore
|
||||||
|
|
||||||
|
self.assertEqual(
|
||||||
|
["-Parameter", "-Another 'DEFAULT'"],
|
||||||
|
Script.parse_script_args(agent=agent, shell="python", args=args),
|
||||||
|
)
|
||||||
|
|
||||||
|
# test blank default and value
|
||||||
|
field.default_value_string = "" # type: ignore
|
||||||
|
field.save() # type: ignore
|
||||||
|
|
||||||
|
self.assertEqual(
|
||||||
|
["-Parameter", "-Another ''"],
|
||||||
|
Script.parse_script_args(agent=agent, shell="python", args=args),
|
||||||
|
)
|
||||||
|
|
||||||
def test_script_arg_replacement_array_fields(self):
|
def test_script_arg_replacement_array_fields(self):
|
||||||
agent = baker.make_recipe("agents.agent")
|
agent = baker.make_recipe("agents.agent")
|
||||||
field = baker.make(
|
field = baker.make(
|
||||||
|
|
|
@ -336,13 +336,16 @@ def replace_db_values(
|
||||||
model_fields = getattr(field, f"{model}_fields")
|
model_fields = getattr(field, f"{model}_fields")
|
||||||
value = None
|
value = None
|
||||||
if model_fields.filter(**{model: obj}).exists():
|
if model_fields.filter(**{model: obj}).exists():
|
||||||
value = model_fields.get(**{model: obj}).value
|
if field.type != "checkbox" and model_fields.get(**{model: obj}).value:
|
||||||
|
value = model_fields.get(**{model: obj}).value
|
||||||
|
elif field.type == "checkbox":
|
||||||
|
value = model_fields.get(**{model: obj}).value
|
||||||
|
|
||||||
# need explicit None check since a false boolean value will pass default value
|
# need explicit None check since a false boolean value will pass default value
|
||||||
if value == None and field.default_value:
|
if value == None and field.default_value != None:
|
||||||
value = field.default_value
|
value = field.default_value
|
||||||
|
|
||||||
# check if value exists and if not use defa
|
# check if value exists and if not use default
|
||||||
if value and field.type == "multiple":
|
if value and field.type == "multiple":
|
||||||
value = (
|
value = (
|
||||||
f"'{format_shell_array(value)}'"
|
f"'{format_shell_array(value)}'"
|
||||||
|
|
Loading…
Reference in New Issue