"""Context for validating audio product feature flags.""" from dataclasses import dataclass from product_digital import features from product_digital.constants import features as feature_names @dataclass class ValidateAudioProductFeatureFlagContext: """Context for validating audio product feature flags.""" vendor_id: int = None primary_artist_mismatch_error: bool = False single_track_product_various_artists: bool = False featuring_artist_mismatch: bool = False remixer_mismatch: bool = False producer_mismatch: bool = False product_name_length_check: bool = False various_artist_on_featuring: bool = False spotify_watchlist_artist: bool = False artwork_metadata_mismatch: bool = False preorder_pricing_warning: bool = False spatial_upc_validation: bool = False release_level_lyricist: bool = False def __post_init__(self): """Set feature flags based on vendor ID.""" self.primary_artist_mismatch_error |= features.is_feature_flag_enabled_for_vendor( feature_names.PRIMARY_ARTIST_ERROR_VALIDATION, self.vendor_id) self.single_track_product_various_artists |= features.is_feature_flag_enabled_for_vendor( feature_names.SINGLE_TRACK_PRODUCT_VARIOUS_ARTISTS, self.vendor_id) self.featuring_artist_mismatch |= features.is_feature_flag_enabled_for_vendor( feature_names.FEATURING_ARTIST_VALIDATION, self.vendor_id) self.remixer_mismatch |= features.is_feature_flag_enabled_for_vendor( feature_names.REMIXER_MISMATCH_VALIDATION, self.vendor_id) self.producer_mismatch |= features.is_feature_flag_enabled_for_vendor( feature_names.PRODUCER_MISMATCH_VALIDATION, self.vendor_id) self.product_name_length_check |= features.is_feature_flag_enabled_for_vendor( feature_names.PRODUCT_NAME_LENGTH_VALIDATION, self.vendor_id) self.various_artist_on_featuring |= features.is_feature_flag_enabled_for_vendor( feature_names.VARIOUS_ARTIST_ON_FEATURING_VALIDATION, self.vendor_id) self.spotify_watchlist_artist |= features.is_feature_flag_enabled_for_vendor( feature_names.SPOTIFY_WATCHLIST_ARTIST_VALIDATION, self.vendor_id) self.artwork_metadata_mismatch |= features.is_feature_flag_enabled_for_vendor( feature_names.ARTWORK_METADATA_MISMATCH_VALIDATION, self.vendor_id) self.preorder_pricing_warning |= features.is_feature_flag_enabled_for_vendor( feature_names.PREORDER_PRICING_VALIDATION, self.vendor_id) self.spatial_upc_validation |= features.is_feature_flag_enabled_for_vendor( feature_names.SPATIAL_UPC_VALIDATION, self.vendor_id) self.release_level_lyricist |= features.is_feature_flag_enabled_for_vendor( feature_names.RELEASE_LEVEL_LYRICIST, self.vendor_id)