Skip to content

Commit 71e7ed4

Browse files
committed
TT-98 fix: refactor feature toggle manager
1 parent 89f6c51 commit 71e7ed4

File tree

3 files changed

+25
-19
lines changed

3 files changed

+25
-19
lines changed

commons/feature_flags/features_flags.py renamed to commons/feature_toggles/feature_toggle_manager.py

Lines changed: 19 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,17 @@
44
import os
55

66

7-
class FeatureFlags:
7+
class FeatureToggleManager:
88
AZURE_CONNECTION_STRING = os.environ.get(
99
'AZURE_APP_CONFIGURATION_CONNECTION_STRING'
1010
)
1111

1212
def __init__(self, key: str, label: str = None):
1313
self.key = key
1414
self.label = label
15-
self.configuration = self.get_configuration(self.key, self.label)
15+
self.configuration = {}
1616

17-
def get_configuration(self, key: str, label: str):
17+
def _get_configuration(self, key: str, label: str):
1818
connection_str = self.AZURE_CONNECTION_STRING
1919
client = AzureAppConfigurationClient.from_connection_string(
2020
connection_str
@@ -25,21 +25,27 @@ def get_configuration(self, key: str, label: str):
2525

2626
return configuration
2727

28-
def is_toggle_enabled(self):
29-
self.configuration = self.get_configuration(self.key, self.label)
30-
data = json.loads(self.configuration.value)
28+
def _get_data_configuration(self):
29+
self.configuration = self._get_configuration(self.key, self.label)
30+
result = json.loads(self.configuration.value)
31+
32+
return result
33+
34+
def _is_toggle_enabled(self):
35+
data = self._get_data_configuration()
3136
result = data["enabled"]
3237

3338
return result
3439

3540
def is_toggle_enabled_for_user(self):
36-
self.configuration = self.get_configuration(self.key, self.label)
37-
data = json.loads(self.configuration.value)
38-
list_data = data["conditions"]["client_filters"]
39-
data2 = list_data[0]
40-
list_users = data2["parameters"]["Audience"]["Users"]
41-
user = current_user_email()
41+
data = self._get_data_configuration()
42+
client_filters = data["conditions"]["client_filters"]
43+
first_client = client_filters[0]
44+
list_users = first_client["parameters"]["Audience"]["Users"]
45+
current_user = current_user_email()
4246

4347
return (
44-
True if user in list_users and self.is_toggle_enabled() else False
48+
True
49+
if current_user in list_users and self._is_toggle_enabled()
50+
else False
4551
)

time_tracker_api/time_entries/time_entries_namespace.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
remove_required_constraint,
1818
)
1919
from time_tracker_api.time_entries.time_entries_dao import create_dao
20-
from commons.feature_flags.features_flags import FeatureFlags
20+
from commons.feature_toggles.feature_toggle_manager import FeatureToggleManager
2121

2222
faker = Faker()
2323

@@ -268,14 +268,14 @@ def get(self):
268268
return time_entries_dao.get_lastest_entries_by_project(conditions={})
269269

270270

271-
@ns.route('/featureFlags')
272-
class featuresFlags(Resource):
273-
@ns.doc('flags')
271+
@ns.route('/feature-toggles')
272+
class FeaturesToggles(Resource):
273+
@ns.doc('feature_toggle_tests')
274274
@ns.marshal_list_with(time_entry)
275275
@ns.response(HTTPStatus.NOT_FOUND, 'No time entries found')
276276
def get(self):
277-
"""List the latest time entries"""
278-
featureTest = FeatureFlags("ui-list-test-users")
277+
"""Test Feature Toggles"""
278+
featureTest = FeatureToggleManager("ui-list-test-users")
279279
test = featureTest.is_toggle_enabled_for_user()
280280
if test:
281281
return time_entries_dao.get_lastest_entries_by_project(

0 commit comments

Comments
 (0)