Skip to content

Commit 2c6407b

Browse files
Merge pull request #109 from Flagsmith/release/1.6.6
Release 1.6.6
2 parents faa38e0 + 9a714a1 commit 2c6407b

File tree

6 files changed

+18
-13
lines changed

6 files changed

+18
-13
lines changed

flag_engine/django_transform/fields.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
import typing
2-
from datetime import datetime
32

43
from marshmallow import fields
54

5+
from flag_engine.utils.datetime import utcnow_with_tz
6+
67

78
class DjangoRelatedManagerField(fields.List):
89
def __init__(self, *args, filter_func: typing.Callable = None, **kwargs):
@@ -22,7 +23,7 @@ def get_value(self, obj, attr, **kwargs) -> typing.List[typing.Any]:
2223

2324
class DjangoFeatureStatesRelatedManagerField(DjangoRelatedManagerField):
2425
def get_value(self, obj, attr, **kwargs):
25-
now = datetime.now()
26+
now = utcnow_with_tz()
2627
features_map = {}
2728
for fs in getattr(obj, attr).all():
2829
if self.filter_func and not self.filter_func(fs):

flag_engine/django_transform/schemas.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import typing
2-
from datetime import datetime
32

43
from marshmallow import fields, post_dump, pre_dump
54

@@ -25,6 +24,7 @@
2524
BaseSegmentRuleSchema,
2625
BaseSegmentSchema,
2726
)
27+
from flag_engine.utils.datetime import utcnow_with_tz
2828

2929

3030
class DjangoFeatureStateSchema(BaseFeatureStateSchema):
@@ -73,7 +73,7 @@ def serialize_feature_states(self, instance: typing.Any) -> typing.List[dict]:
7373
# iterate over the feature segments and related feature states to end up with
7474
# a list consisting of the latest version feature state for each feature
7575
feature_states = {}
76-
now = datetime.now()
76+
now = utcnow_with_tz()
7777
for feature_segment in feature_segments:
7878
for feature_state in feature_segment.feature_states.all():
7979
existing_feature_state = feature_states.get(feature_state.feature_id)

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
setup(
44
name="flagsmith-flag-engine",
5-
version="1.6.5",
5+
version="1.6.6",
66
author="Flagsmith",
77
author_email="[email protected]",
88
packages=find_packages(include=["flag_engine", "flag_engine.*"]),

tests/mock_django_classes.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22
from dataclasses import dataclass, field
33
from datetime import datetime
44

5+
from flag_engine.utils.datetime import utcnow_with_tz
6+
57

68
@dataclass
79
class DjangoSegmentCondition:
@@ -173,7 +175,7 @@ def __init__(
173175
)
174176
)
175177
self.version = version
176-
self.live_from = live_from or datetime.now()
178+
self.live_from = live_from or utcnow_with_tz()
177179

178180
def get_feature_state_value(self):
179181
return self.value

tests/unit/django_transform/test_document_builders.py

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
11
import json
2-
from datetime import datetime, timedelta
2+
from datetime import timedelta
33

44
from flag_engine.django_transform.document_builders import (
55
build_environment_api_key_document,
66
build_environment_document,
77
build_identity_document,
88
)
99
from flag_engine.features.constants import STANDARD
10+
from flag_engine.utils.datetime import utcnow_with_tz
1011
from flag_engine.utils.json.encoders import DecimalEncoder
1112
from tests.mock_django_classes import (
1213
DjangoEnvironment,
@@ -86,8 +87,8 @@ def test_build_environment_document_with_multiple_feature_state_versions(
8687
django_project,
8788
):
8889
# Given
89-
yesterday = datetime.now() - timedelta(days=1)
90-
tomorrow = datetime.now() + timedelta(days=1)
90+
yesterday = utcnow_with_tz() - timedelta(days=1)
91+
tomorrow = utcnow_with_tz() + timedelta(days=1)
9192

9293
# a feature
9394
feature = DjangoFeature(
@@ -122,8 +123,8 @@ def test_build_identity_document_with_multiple_feature_state_versions(
122123
django_environment, django_disabled_feature_state
123124
):
124125
# Given
125-
yesterday = datetime.now() - timedelta(days=1)
126-
tomorrow = datetime.now() + timedelta(days=1)
126+
yesterday = utcnow_with_tz() - timedelta(days=1)
127+
tomorrow = utcnow_with_tz() + timedelta(days=1)
127128
feature = django_disabled_feature_state.feature
128129

129130
identity_feature_state_v1 = DjangoFeatureState(

tests/unit/django_transform/test_fields.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from datetime import datetime, timedelta
1+
from datetime import timedelta
22
from unittest import mock
33

44
from marshmallow import fields
@@ -7,6 +7,7 @@
77
DjangoFeatureStatesRelatedManagerField,
88
DjangoRelatedManagerField,
99
)
10+
from flag_engine.utils.datetime import utcnow_with_tz
1011

1112

1213
def test_django_related_manager_field_serialize():
@@ -74,7 +75,7 @@ def test_django_feature_state_related_manager_field_serialize_discards_old_versi
7475
# expect a django object to. Each feature state associated with the same feature
7576
# but with incrementing version numbers.
7677
feature_id = 1
77-
yesterday = datetime.now() - timedelta(days=1)
78+
yesterday = utcnow_with_tz() - timedelta(days=1)
7879
feature_states = [
7980
mock.MagicMock(id=i, feature_id=feature_id, version=i, live_from=yesterday)
8081
for i in (1, 2, 3, 4, 5)

0 commit comments

Comments
 (0)