55from typing import Iterable
66from typing import Union
77
8- from django_lifecycle import NotSet
9- from django_lifecycle .conditions .base import ChainableCondition
8+ from .. constants import NotSet
9+ from . .conditions .base import ChainableCondition
1010
1111
1212__all__ = [
@@ -25,9 +25,7 @@ class WhenFieldValueWas(ChainableCondition):
2525 field_name : str
2626 value : Any = "*"
2727
28- def __call__ (
29- self , instance : Any , update_fields : Union [Iterable [str ], None ] = None
30- ) -> bool :
28+ def __call__ (self , instance : Any , update_fields : Union [Iterable [str ], None ] = None ) -> bool :
3129 return self .value in (instance .initial_value (self .field_name ), "*" )
3230
3331
@@ -36,9 +34,7 @@ class WhenFieldValueIs(ChainableCondition):
3634 field_name : str
3735 value : Any = "*"
3836
39- def __call__ (
40- self , instance : Any , update_fields : Union [Iterable [str ], None ] = None
41- ) -> bool :
37+ def __call__ (self , instance : Any , update_fields : Union [Iterable [str ], None ] = None ) -> bool :
4238 return self .value in (instance ._current_value (self .field_name ), "*" )
4339
4440
@@ -47,73 +43,47 @@ class WhenFieldHasChanged(ChainableCondition):
4743 field_name : str
4844 has_changed : bool | None = None
4945
50- def __call__ (
51- self , instance : Any , update_fields : Union [Iterable [str ], None ] = None
52- ) -> bool :
46+ def __call__ (self , instance : Any , update_fields : Union [Iterable [str ], None ] = None ) -> bool :
5347 is_partial_fields_update = update_fields is not None
54- is_synced = (
55- is_partial_fields_update is False or self .field_name in update_fields
56- )
48+ is_synced = is_partial_fields_update is False or self .field_name in update_fields
5749 if not is_synced :
5850 return False
5951
60- return self .has_changed is None or self .has_changed == instance .has_changed (
61- self .field_name
62- )
52+ return self .has_changed is None or self .has_changed == instance .has_changed (self .field_name )
6353
6454
6555@dataclass
6656class WhenFieldValueIsNot (ChainableCondition ):
6757 field_name : str
6858 value : Any = NotSet
6959
70- def __call__ (
71- self , instance : Any , update_fields : Union [Iterable [str ], None ] = None
72- ) -> bool :
73- return (
74- self .value is NotSet
75- or instance ._current_value (self .field_name ) != self .value
76- )
60+ def __call__ (self , instance : Any , update_fields : Union [Iterable [str ], None ] = None ) -> bool :
61+ return self .value is NotSet or instance ._current_value (self .field_name ) != self .value
7762
7863
7964@dataclass
8065class WhenFieldValueWasNot (ChainableCondition ):
8166 field_name : str
8267 value : Any = NotSet
8368
84- def __call__ (
85- self , instance : Any , update_fields : Union [Iterable [str ], None ] = None
86- ) -> bool :
87- return (
88- self .value is NotSet
89- or instance .initial_value (self .field_name ) != self .value
90- )
69+ def __call__ (self , instance : Any , update_fields : Union [Iterable [str ], None ] = None ) -> bool :
70+ return self .value is NotSet or instance .initial_value (self .field_name ) != self .value
9171
9272
9373@dataclass
9474class WhenFieldValueChangesTo (ChainableCondition ):
9575 field_name : str
9676 value : Any = NotSet
9777
98- def __call__ (
99- self , instance : Any , update_fields : Union [Iterable [str ], None ] = None
100- ) -> bool :
78+ def __call__ (self , instance : Any , update_fields : Union [Iterable [str ], None ] = None ) -> bool :
10179 is_partial_fields_update = update_fields is not None
102- is_synced = (
103- is_partial_fields_update is False or self .field_name in update_fields
104- )
80+ is_synced = is_partial_fields_update is False or self .field_name in update_fields
10581 if not is_synced :
10682 return False
10783
108- value_has_changed = bool (
109- instance .initial_value (self .field_name ) != self .value
110- )
111- new_value_is_the_expected = bool (
112- instance ._current_value (self .field_name ) == self .value
113- )
114- return self .value is NotSet or (
115- value_has_changed and new_value_is_the_expected
116- )
84+ value_has_changed = bool (instance .initial_value (self .field_name ) != self .value )
85+ new_value_is_the_expected = bool (instance ._current_value (self .field_name ) == self .value )
86+ return self .value is NotSet or (value_has_changed and new_value_is_the_expected )
11787
11888
11989class Always :
0 commit comments