This class will check if any of the feature flags are available for a given user on a give Diffgram Installation. Eventually this class will be using an external feature flag system SDK.
| 11 | |
| 12 | |
| 13 | class FeatureChecker: |
| 14 | """ |
| 15 | This class will check if any of the feature flags are available for a given |
| 16 | user on a give Diffgram Installation. |
| 17 | |
| 18 | Eventually this class will be using an external feature flag system SDK. |
| 19 | """ |
| 20 | |
| 21 | user: User |
| 22 | session: Session |
| 23 | project: Project |
| 24 | install_fingerprint: str |
| 25 | FEATURE_FLAGS: list # Temp list while feature flag system is implemented. |
| 26 | log: dict |
| 27 | |
| 28 | def __init__(self, session: Session, user: User, project: Project): |
| 29 | self.user = user |
| 30 | self.project = project |
| 31 | self.session = session |
| 32 | self.log = regular_log.default_api_log() |
| 33 | self.install_finger_print = settings.DIFFGRAM_INSTALL_FINGERPRINT |
| 34 | # This Dict will eventually be replaced by calls to our feature flag system. |
| 35 | self.FEATURE_FLAGS = [ |
| 36 | 'MAX_VIDEOS_PER_DATASET', |
| 37 | 'MAX_USERS_PER_PROJECT', |
| 38 | 'MAX_IMAGES_PER_DATASET', |
| 39 | 'MAX_TEXT_FILES_PER_DATASET', |
| 40 | 'MAX_SENSOR_FUSION_FILES_PER_DATASET', |
| 41 | 'MAX_FRAMES_PER_VIDEO', |
| 42 | 'MAX_INSTANCES_PER_EXPORT', |
| 43 | 'MAX_PROJECTS', |
| 44 | ] |
| 45 | |
| 46 | |
| 47 | def get_free_plan_template(self): |
| 48 | if settings.IS_OPEN_SOURCE: |
| 49 | return PlanTemplate.get_by_internal_name( |
| 50 | session = self.session, |
| 51 | internal_name = 'open_source_free_plan' |
| 52 | ) |
| 53 | else: |
| 54 | return PlanTemplate.get_by_internal_name( |
| 55 | session = self.session, |
| 56 | internal_name = 'default_free_plan' |
| 57 | ) |
| 58 | |
| 59 | def get_or_create_free_plan(self): |
| 60 | plan_template = self.get_free_plan_template() |
| 61 | if not plan_template: |
| 62 | plan_template = PlanTemplate.create_free_plan(session = self.session) |
| 63 | |
| 64 | PlanTemplate.update_default_free_plan_values(session = self.session, plan_template = plan_template) |
| 65 | |
| 66 | plan = Plan.new( |
| 67 | session = self.session, |
| 68 | member = self.user.member if self.user else None, |
| 69 | plan_template = plan_template, |
| 70 | premium_plan_user_count = -1, |
no outgoing calls
no test coverage detected