Skip to content

Commit ddb4e9e

Browse files
committed
added source/value wiping for type change
1 parent e99b285 commit ddb4e9e

File tree

2 files changed

+38
-0
lines changed

2 files changed

+38
-0
lines changed

RATapi/models.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,15 @@ def warn_parameters(self):
9696

9797
return self
9898

99+
def __setattr__(self, name, value):
100+
if name == "type":
101+
for attr in ["source", "value_1", "value_2", "value_3", "value_4", "value_5"]:
102+
with warnings.catch_warnings():
103+
warnings.simplefilter("ignore")
104+
super().__setattr__(attr, "")
105+
106+
super().__setattr__(name, value)
107+
99108

100109
class Contrast(RATModel):
101110
"""A group of all of the components of a model.
@@ -592,3 +601,12 @@ def warn_parameters(self):
592601
)
593602

594603
return self
604+
605+
def __setattr__(self, name, value):
606+
if name == "type":
607+
for attr in ["source", "value_1", "value_2", "value_3", "value_4", "value_5"]:
608+
with warnings.catch_warnings():
609+
warnings.simplefilter("ignore")
610+
super().__setattr__(attr, "")
611+
612+
super().__setattr__(name, value)

tests/test_models.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -332,3 +332,23 @@ def test_contrast_bad_ratio():
332332
),
333333
):
334334
RATapi.models.Contrast(name="My Contrast", domain_ratio="bad ratio")
335+
336+
337+
@pytest.mark.parametrize("model", [RATapi.models.Background, RATapi.models.Resolution])
338+
def test_type_change_clear(model):
339+
"""If the type of a background or resolution is changed, it should wipe the other fields."""
340+
341+
model_instance = model(
342+
name="Test",
343+
type="constant",
344+
source="src",
345+
value_1="val1",
346+
value_2="val2",
347+
value_3="val3",
348+
value_4="val4",
349+
value_5="val5",
350+
)
351+
352+
model_instance.type = "data"
353+
for attr in ["source", "value_1", "value_2", "value_3", "value_4", "value_5"]:
354+
assert getattr(model_instance, attr) == ""

0 commit comments

Comments
 (0)