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
|
||||
baker.make(
|
||||
value = baker.make(
|
||||
"clients.SiteCustomField",
|
||||
field=field,
|
||||
site=agent.site,
|
||||
|
@ -399,6 +399,24 @@ class TestScriptViews(TacticalTestCase):
|
|||
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):
|
||||
agent = baker.make_recipe("agents.agent")
|
||||
field = baker.make(
|
||||
|
|
|
@ -336,13 +336,16 @@ def replace_db_values(
|
|||
model_fields = getattr(field, f"{model}_fields")
|
||||
value = None
|
||||
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
|
||||
if value == None and field.default_value:
|
||||
if value == None and field.default_value != None:
|
||||
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":
|
||||
value = (
|
||||
f"'{format_shell_array(value)}'"
|
||||
|
|
Loading…
Reference in New Issue