Skip to content

Commit b8b6336

Browse files
committed
refactor: Rename conditions as suggested by @mateocpdev
1 parent bca0577 commit b8b6336

File tree

6 files changed

+78
-83
lines changed

6 files changed

+78
-83
lines changed

django_lifecycle/conditions/__init__.py

Lines changed: 24 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -10,36 +10,36 @@
1010

1111

1212
__all__ = [
13-
"WhenFieldWas",
14-
"WhenFieldIsNow",
13+
"WhenFieldValueWas",
14+
"WhenFieldValueIs",
1515
"WhenFieldHasChanged",
16-
"WhenFieldIsNot",
17-
"WhenFieldWasNot",
18-
"WhenFieldChangesTo",
16+
"WhenFieldValueIsNot",
17+
"WhenFieldValueWasNot",
18+
"WhenFieldValueChangesTo",
1919
"Always",
2020
]
2121

2222

2323
@dataclass
24-
class WhenFieldWas(ChainableCondition):
24+
class WhenFieldValueWas(ChainableCondition):
2525
field_name: str
26-
was: Any = "*"
26+
value: Any = "*"
2727

2828
def __call__(
2929
self, instance: Any, update_fields: Union[Iterable[str], None] = None
3030
) -> bool:
31-
return self.was in (instance.initial_value(self.field_name), "*")
31+
return self.value in (instance.initial_value(self.field_name), "*")
3232

3333

3434
@dataclass
35-
class WhenFieldIsNow(ChainableCondition):
35+
class WhenFieldValueIs(ChainableCondition):
3636
field_name: str
37-
is_now: Any = "*"
37+
value: Any = "*"
3838

3939
def __call__(
4040
self, instance: Any, update_fields: Union[Iterable[str], None] = None
4141
) -> bool:
42-
return self.is_now in (instance._current_value(self.field_name), "*")
42+
return self.value in (instance._current_value(self.field_name), "*")
4343

4444

4545
@dataclass
@@ -63,37 +63,37 @@ def __call__(
6363

6464

6565
@dataclass
66-
class WhenFieldIsNot(ChainableCondition):
66+
class WhenFieldValueIsNot(ChainableCondition):
6767
field_name: str
68-
is_not: Any = NotSet
68+
value: Any = NotSet
6969

7070
def __call__(
7171
self, instance: Any, update_fields: Union[Iterable[str], None] = None
7272
) -> bool:
7373
return (
74-
self.is_not is NotSet
75-
or instance._current_value(self.field_name) != self.is_not
74+
self.value is NotSet
75+
or instance._current_value(self.field_name) != self.value
7676
)
7777

7878

7979
@dataclass
80-
class WhenFieldWasNot(ChainableCondition):
80+
class WhenFieldValueWasNot(ChainableCondition):
8181
field_name: str
82-
was_not: Any = NotSet
82+
value: Any = NotSet
8383

8484
def __call__(
8585
self, instance: Any, update_fields: Union[Iterable[str], None] = None
8686
) -> bool:
8787
return (
88-
self.was_not is NotSet
89-
or instance.initial_value(self.field_name) != self.was_not
88+
self.value is NotSet
89+
or instance.initial_value(self.field_name) != self.value
9090
)
9191

9292

9393
@dataclass
94-
class WhenFieldChangesTo(ChainableCondition):
94+
class WhenFieldValueChangesTo(ChainableCondition):
9595
field_name: str
96-
changes_to: Any = NotSet
96+
value: Any = NotSet
9797

9898
def __call__(
9999
self, instance: Any, update_fields: Union[Iterable[str], None] = None
@@ -106,12 +106,12 @@ def __call__(
106106
return False
107107

108108
value_has_changed = bool(
109-
instance.initial_value(self.field_name) != self.changes_to
109+
instance.initial_value(self.field_name) != self.value
110110
)
111111
new_value_is_the_expected = bool(
112-
instance._current_value(self.field_name) == self.changes_to
112+
instance._current_value(self.field_name) == self.value
113113
)
114-
return self.changes_to is NotSet or (
114+
return self.value is NotSet or (
115115
value_has_changed and new_value_is_the_expected
116116
)
117117

django_lifecycle/conditions/legacy.py

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,12 @@
77

88
from django_lifecycle import NotSet
99
from django_lifecycle.conditions.base import ChainableCondition
10-
from django_lifecycle.conditions import WhenFieldChangesTo
10+
from django_lifecycle.conditions import WhenFieldValueChangesTo
1111
from django_lifecycle.conditions import WhenFieldHasChanged
12-
from django_lifecycle.conditions import WhenFieldIsNot
13-
from django_lifecycle.conditions import WhenFieldIsNow
14-
from django_lifecycle.conditions import WhenFieldWas
15-
from django_lifecycle.conditions import WhenFieldWasNot
12+
from django_lifecycle.conditions import WhenFieldValueIsNot
13+
from django_lifecycle.conditions import WhenFieldValueIs
14+
from django_lifecycle.conditions import WhenFieldValueWas
15+
from django_lifecycle.conditions import WhenFieldValueWasNot
1616

1717

1818
@dataclass
@@ -32,23 +32,23 @@ def __call__(self, instance: Any, update_fields=None) -> bool:
3232
if not has_changed_condition(instance, update_fields=update_fields):
3333
return False
3434

35-
changes_to_condition = WhenFieldChangesTo(self.when, changes_to=self.changes_to)
35+
changes_to_condition = WhenFieldValueChangesTo(self.when, value=self.changes_to)
3636
if not changes_to_condition(instance, self.when):
3737
return False
3838

39-
is_now_condition = WhenFieldIsNow(self.when, is_now=self.is_now)
39+
is_now_condition = WhenFieldValueIs(self.when, value=self.is_now)
4040
if not is_now_condition(instance, self.when):
4141
return False
4242

43-
was_condition = WhenFieldWas(self.when, was=self.was)
43+
was_condition = WhenFieldValueWas(self.when, value=self.was)
4444
if not was_condition(instance, self.when):
4545
return False
4646

47-
was_not_condition = WhenFieldWasNot(self.when, was_not=self.was_not)
47+
was_not_condition = WhenFieldValueWasNot(self.when, value=self.was_not)
4848
if not was_not_condition(instance, self.when):
4949
return False
5050

51-
is_not_condition = WhenFieldIsNot(self.when, is_not=self.is_not)
51+
is_not_condition = WhenFieldValueIsNot(self.when, value=self.is_not)
5252
if not is_not_condition(instance, self.when):
5353
return False
5454

django_lifecycle/mixins.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,7 @@ def getitem(obj, field_name: str):
145145

146146
def initial_value(self, field_name: str) -> Any:
147147
"""
148-
Get initial value of field when model was instantiated.
148+
Get initial value of field when model value instantiated.
149149
"""
150150
field_name = self._sanitize_field_name(field_name)
151151

@@ -156,7 +156,7 @@ def initial_value(self, field_name: str) -> Any:
156156

157157
def has_changed(self, field_name: str) -> bool:
158158
"""
159-
Check if a field has changed since the model was instantiated.
159+
Check if a field has changed since the model value instantiated.
160160
"""
161161
changed = self._diff_with_initial.keys()
162162
field_name = self._sanitize_field_name(field_name)

docs/hooks_and_conditions.md

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -50,25 +50,25 @@ state of a model instance's fields.
5050

5151
There are some conditions already implemented, but you can provide your own condition, or even chain them using `&` and `|`.
5252

53-
- `WhenFieldChangesTo(field_name, has_changed)`
54-
- `WhenFieldIsNow(field_name, is_now)`
55-
- `WhenFieldIsNot(field_name, is_not)`
56-
- `WhenFieldWas(field_name, was)`
57-
- `WhenFieldWasNot(field_name, was_not)`
58-
- `WhenFieldChangesTo(field_name, changes_to)`
53+
- `WhenFieldHasChanged(field_name, has_changed)`
54+
- `WhenFieldValueIs(field_name, value)`
55+
- `WhenFieldValueIsNot(field_name, value)`
56+
- `WhenFieldValueWas(field_name, value)`
57+
- `WhenFieldValueWasNot(field_name, value)`
58+
- `WhenFieldValueChangesTo(field_name, value)`
5959

6060
### Chaining conditions
6161
Conditions can be chained using `&` and `|` boolean operators
6262

6363
```python
64-
from django_lifecycle.conditions import WhenFieldChangesTo
64+
from django_lifecycle.conditions import WhenFieldValueChangesTo
6565
from django_lifecycle import hook, BEFORE_UPDATE
6666

6767
@hook(
6868
BEFORE_UPDATE,
6969
condition=(
70-
WhenFieldChangesTo("first_name", changes_to="Ned")
71-
& WhenFieldChangesTo("last_name", changes_to="Flanders")
70+
WhenFieldValueChangesTo("first_name", value="Ned")
71+
& WhenFieldValueChangesTo("last_name", value="Flanders")
7272
)
7373
)
7474
def do_something(self):

tests/testapp/models.py

Lines changed: 9 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -59,9 +59,7 @@ def timestamp_joined_at(self):
5959
@hook("after_create", on_commit=True)
6060
def do_after_create_jobs(self):
6161
# queue background job to process thumbnail image...
62-
mail.send_mail(
63-
"Welcome!", "Thank you for joining.", "[email protected]", ["[email protected]"]
64-
)
62+
mail.send_mail("Welcome!", "Thank you for joining.", "[email protected]", ["[email protected]"])
6563

6664
@staticmethod
6765
def build_email_changed_body(old_email, new_email):
@@ -71,21 +69,23 @@ def build_email_changed_body(old_email, new_email):
7169
def notify_email_changed(self):
7270
mail.send_mail(
7371
subject="Email changed succesfully",
74-
message=self.build_email_changed_body(old_email=self.initial_value('email'), new_email=self.email),
72+
message=self.build_email_changed_body(
73+
old_email=self.initial_value("email"), new_email=self.email
74+
),
7575
from_email="[email protected]",
76-
recipient_list=["[email protected]"]
76+
recipient_list=["[email protected]"],
7777
)
7878

7979
@hook("before_update", when="password", has_changed=True)
8080
def timestamp_password_change(self):
8181
self.password_updated_at = timezone.now()
8282

83-
@hook('before_update', when='first_name', has_changed=True)
84-
@hook('before_update', when='last_name', has_changed=True)
83+
@hook("before_update", when="first_name", has_changed=True)
84+
@hook("before_update", when="last_name", has_changed=True)
8585
def count_name_changes(self):
8686
self.name_changes += 1
8787

88-
@hook("before_delete", when='has_trial', was='*', is_now=True)
88+
@hook("before_delete", when="has_trial", was="*", is_now=True)
8989
def ensure_trial_not_active(self):
9090
raise CannotDeleteActiveTrial("Cannot delete trial user!")
9191

@@ -170,12 +170,7 @@ def answer_to_the_ultimate_question_of_life(self):
170170

171171
class ModelWithGenericForeignKey(LifecycleModel):
172172
tag = models.SlugField()
173-
content_type = models.ForeignKey(
174-
ContentType,
175-
on_delete=models.CASCADE,
176-
blank=True,
177-
null=True
178-
)
173+
content_type = models.ForeignKey(ContentType, on_delete=models.CASCADE, blank=True, null=True)
179174
object_id = models.PositiveIntegerField(blank=True, null=True)
180175
content_object = GenericForeignKey("content_type", "object_id")
181176

0 commit comments

Comments
 (0)