"""Feature flags logic.""" from flask import g from pythonfeatures import pythonfeatures from pythonfeatures.constants import split as split_constants from playlist import config from playlist.queries.constants import ( INSIGHTS_DISABLE_PLAYLISTS_CACHE, INSIGHTS_FILTER_INCORRECT_PLAYLISTS, INSIGHTS_PLAYLIST_PAGE_APPLE_MUSIC_PLAYLISTS, INSIGHTS_PLAYLIST_PAGE_HIDE_COMPILATION_ART, INSIGHTS_PLAYLIST_PAGE_HOURLY_PLAYLISTS, INSIGHTS_PLAYLIST_PAGE_NON_PRIORITY_PLAYLISTS, INSIGHTS_PLAYLIST_V2_CURRENT_PAST, INSIGHTS_PRIMARY_PLAYLIST_TYPE, INSIGHTS_TRANSFER_PRODUCT_OWNERSHIP, SHOW_SME_DATA, ) def _check_feature_flag(feature_flag): if config.ENVIRONMENT == config.DEV_ENVIRONMENT: # pragma: no cover return True """Check if a feature flag is enabled.""" return ( pythonfeatures.get_single_feature(feature_flag, g.request_context).message == split_constants.FEATURE_ENABLED ) def is_show_sme_data_enabled(): """Check if show_sme_data feature flag is enabled.""" # Bypass show_sme_data FF check based on user's profile brand: sme user_brand = getattr(g.request_context, "brand", None) if user_brand and user_brand == "sme": return True return _check_feature_flag(SHOW_SME_DATA) def is_insights_playlist_v2_current_past_enabled(): """Check if insights_playlist_v2_current_past feature flag is enabled.""" return _check_feature_flag(INSIGHTS_PLAYLIST_V2_CURRENT_PAST) def is_insights_primary_playlist_type_enabled(): """Check if insights_primary_playlist_type feature flag is enabled.""" return _check_feature_flag(INSIGHTS_PRIMARY_PLAYLIST_TYPE) def is_filter_incorrect_playlists_enabled(): """Check if insights_filter_incorrect_playlists feature flag is enabled.""" return _check_feature_flag(INSIGHTS_FILTER_INCORRECT_PLAYLISTS) def is_disable_playlists_cache_enabled(): """Check if insights_disable_playlists_cache flag is enabled.""" return _check_feature_flag(INSIGHTS_DISABLE_PLAYLISTS_CACHE) def is_insights_playlist_page_hourly_playlists_enabled(): """Check if insights_playlist_page_hourly_playlists flag is enabled.""" return _check_feature_flag(INSIGHTS_PLAYLIST_PAGE_HOURLY_PLAYLISTS) def is_insights_playlist_page_apple_music_playlists_enabled(): """Check if insights_playlist_page_apple_music_playlists flag is enabled.""" return _check_feature_flag(INSIGHTS_PLAYLIST_PAGE_APPLE_MUSIC_PLAYLISTS) def is_insights_playlist_page_non_priority_playlists_enabled(): """Check if insights_playlist_page_non_priority_playlists flag is enabled.""" return _check_feature_flag(INSIGHTS_PLAYLIST_PAGE_NON_PRIORITY_PLAYLISTS) def is_insights_playlist_page_hide_compilation_art_enabled(): """Check if insights_playlist_page_hide_compilation_art flag is enabled.""" return _check_feature_flag(INSIGHTS_PLAYLIST_PAGE_HIDE_COMPILATION_ART) def is_insights_transfer_product_ownership_enabled(): """Check if insights_transfer_product_ownership feature flag is enabled.""" return _check_feature_flag(INSIGHTS_TRANSFER_PRODUCT_OWNERSHIP)