1- from ldclient import Context
2- from ldclient .client import LDClient
3- from pydantic import BaseModel
41from sqlalchemy import select
52
63from deepchecks_monitoring .features_control import FeaturesControl
74from deepchecks_monitoring .public_models import Billing , User
85
96
10- class TierConfSchema (BaseModel ):
11- """Tier configuration which is loaded from launchdarkly."""
12-
13- custom_checks : bool = False
14- data_retention_months : int = 3
15- max_models : int = 1
16- monthly_predictions_limit : int = 500_000
17- sso : bool = False
18- rows_per_minute : int = 500_000
19- update_roles : bool = False
20- model_assignment : bool = False
21-
22-
237class CloudFeaturesControl (FeaturesControl ):
248 """Feature controls class for the cloud version."""
259
26- def __init__ (self , user : User , ld_client : LDClient , settings ):
10+ def __init__ (self , user : User , settings ):
2711 super ().__init__ (settings )
2812 self .user = user
29- self .ld_client = ld_client
30- self ._max_models = None
3113 self ._allowed_models = None
32- self ._rows_per_minute = None
33- self ._custom_checks_enabled = None
34- self ._data_retention_months = None
35- self ._monthly_predictions_limit = None
36- self ._sso_enabled = None
37- self ._signup_enabled = None
38- self ._onboarding_enabled = None
39- self ._update_roles = None
40- self ._model_assignment = None
41-
42- @property
43- def max_models (self ) -> int :
44- if self ._max_models is None :
45- self ._load_tier ()
46- return self ._max_models
4714
4815 async def get_allowed_models (self , session ) -> int :
4916 if self ._allowed_models is None :
@@ -57,85 +24,28 @@ async def get_allowed_models(self, session) -> int:
5724
5825 @property
5926 def update_roles (self ) -> bool :
60- if self ._update_roles is None :
61- self ._load_tier ()
62- return self ._update_roles
27+ return True
6328
6429 @property
6530 def model_assignment (self ) -> bool :
66- if self ._model_assignment is None :
67- self ._load_tier ()
68- return self ._model_assignment
31+ return True
6932
7033 @property
7134 def signup_enabled (self ) -> bool :
72- if self ._signup_enabled is None :
73- self ._load_tier ()
74- return self ._signup_enabled
35+ return True
7536
7637 @property
7738 def onboarding_enabled (self ) -> bool :
78- if self ._onboarding_enabled is None :
79- self ._load_tier ()
80- return self ._onboarding_enabled
39+ return True
8140
8241 @property
8342 def slack_enabled (self ) -> bool :
8443 return True
8544
8645 @property
8746 def rows_per_minute (self ) -> int :
88- if self ._rows_per_minute is None :
89- self ._load_tier ()
90- return self ._rows_per_minute
91-
92- @property
93- def custom_checks_enabled (self ) -> bool :
94- if self ._custom_checks_enabled is None :
95- self ._load_tier ()
96- return self ._custom_checks_enabled
97-
98- @property
99- def data_retention_months (self ) -> int :
100- if self ._data_retention_months is None :
101- self ._load_tier ()
102- return self ._data_retention_months
103-
104- @property
105- def monthly_predictions_limit (self ) -> int :
106- if self ._monthly_predictions_limit is None :
107- self ._load_tier ()
108- return self ._monthly_predictions_limit
109-
110- @property
111- def sso_enabled (self ) -> bool :
112- if self ._sso_enabled is None :
113- self ._load_tier ()
114- return self ._sso_enabled
47+ return 500_000
11548
11649 @property
11750 def multi_tenant (self ) -> bool :
11851 return True
119-
120- def _load_tier (self ):
121- context = Context .builder (self .user .email ).set ("email" , self .user .email )
122- if self .user .organization :
123- context .set ("organization_id" , self .user .organization .id )
124- context .set ("tier" , self .user .organization .tier )
125-
126- ld_user = context .build ()
127- tier_conf = self .ld_client .variation ("paid-features" , ld_user , default = {})
128- if getattr (self .user , "email_verified" , False ):
129- self ._signup_enabled = self .ld_client .variation ("signUpEnabled" , ld_user , default = True )
130- else :
131- self ._signup_enabled = False
132- tier_conf = TierConfSchema (** tier_conf )
133- self ._custom_checks_enabled = tier_conf .custom_checks
134- self ._data_retention_months = tier_conf .data_retention_months
135- self ._max_models = tier_conf .max_models
136- self ._monthly_predictions_limit = tier_conf .monthly_predictions_limit
137- self ._sso_enabled = tier_conf .sso
138- self ._rows_per_minute = tier_conf .rows_per_minute
139- self ._update_roles = tier_conf .update_roles
140- self ._model_assignment = tier_conf .model_assignment
141- self ._onboarding_enabled = self .ld_client .variation ("onBoardingEnabled" , ld_user , default = False )
0 commit comments