"""Utility Functions for Feature Control.""" from pythonfeatures import pythonfeatures from product.models import ows_account def check_feature_control_for_subaccount(subaccount_id, feature_control): """Check whether feature control enabled for subccount. Args: subaccount_id (int): unique identifier of the subaccount. feature_control (string): type of feature control Returns: response: True or False """ subaccount_details_response = ows_account.\ get_subaccount_info(subaccount_id) if subaccount_details_response.status != 200: return subaccount_details_response vendor_id = subaccount_details_response.message.get('vendor_id') return check_feature_control_for_vendor(vendor_id, feature_control) def check_feature_control_for_vendor(vendor_id, feature_control): """Check whether feature control enabled for vendor. Args: vendor_id (int): unique identifier of the vendor. feature_control (string): type of feature control Returns: response: True or False """ get_feature_control_response = ows_account.\ get_enabled_vendor_features_control(vendor_id) if get_feature_control_response.status != 200: return get_feature_control_response features_control = get_feature_control_response.message.get('items') return any([ feature_obj for feature_obj in features_control if feature_obj.get('feature_name') == feature_control]) def is_feature_enabled(feature, request_context=None): """Check if a feature is enabled. Args: feature (str): Feature to check request_context: Flask request context Returns: bool """ if request_context: feature_response = pythonfeatures.get_single_feature(feature, request_context) else: feature_response = pythonfeatures.get_single_feature_by_attributes( feature, {}) message = ( feature_response.message if feature_response.status == 200 else 'fetch_failed' ) return message == 'enabled'