"""Constants required for Release Correction.""" from typing import NamedTuple # These constants represents a Track JSON field mapped to # the appropriate database table and field in The Orchard. # These are required to create a release correction item. # Tuple contains: # Table Name | Field Name | Email Customer | Accept Update (Create RC Detail) class ReleaseCorrectionField(NamedTuple): """Contains information about a release correction field.""" db_table_name: str = '' db_field_name: str = '' email_customer: bool = False accept_update: bool = False RELEASES_TABLE = 'releases' LOCALIZED_RELEASE_TABLE = 'release_localized_metadata' LOCALIZED_RELEASE_ARTIST_TABLE = 'release_artist_localized_metadata' TRACK_TABLE = 'track' TRACK_RIGHTS_TABLE = 'track_master_rights' TRACK_PUBLISHER_TABLE = 'track_publisher' TRACK_PUBLISHING_TABLE = 'track_publishing' LOCALIZED_TRACK_TABLE = 'track_localized_metadata' LOCALIZED_TRACK_ARTIST_TABLE = 'track_artist_localized_metadata' RELEASE_CORRECTION_PRODUCT_SIMPLE_FIELDS = { 'productCode': ReleaseCorrectionField( db_table_name=RELEASES_TABLE, db_field_name='product_code', email_customer=True, accept_update=False), 'cLine': ReleaseCorrectionField( db_table_name=RELEASES_TABLE, db_field_name='c_line', email_customer=False, accept_update=True), 'productName': ReleaseCorrectionField( db_table_name=RELEASES_TABLE, db_field_name='release_name', email_customer=True, accept_update=True), 'productVersion': ReleaseCorrectionField( db_table_name=RELEASES_TABLE, db_field_name='version', email_customer=True, accept_update=True), 'imprint': ReleaseCorrectionField( db_table_name=RELEASES_TABLE, db_field_name='label', email_customer=False, accept_update=True), 'metaLanguage': ReleaseCorrectionField( db_table_name=RELEASES_TABLE, db_field_name='meta_language', email_customer=False, accept_update=True), 'genreId': ReleaseCorrectionField( db_table_name=RELEASES_TABLE, db_field_name='genre_id', email_customer=True, accept_update=True), 'subgenreId': ReleaseCorrectionField( db_table_name=RELEASES_TABLE, db_field_name='release_subgenre', email_customer=True, accept_update=True), 'deliveredVersion': ReleaseCorrectionField( db_table_name=RELEASES_TABLE, db_field_name='delivered_version', email_customer=True, accept_update=True), 'format': ReleaseCorrectionField( db_table_name=RELEASES_TABLE, db_field_name='format', email_customer=True, accept_update=False), 'productLocalization': ReleaseCorrectionField( db_table_name=LOCALIZED_RELEASE_TABLE, db_field_name='release_name', email_customer=True, accept_update=False), 'productArtistLocalization': ReleaseCorrectionField( db_table_name=LOCALIZED_RELEASE_ARTIST_TABLE, db_field_name='artist_name', email_customer=True, accept_update=False), } RELEASE_CORRECTION_PRODUCT_ARTIST_FIELDS = { 'performer': ReleaseCorrectionField( db_table_name=RELEASES_TABLE, db_field_name='performer', email_customer=True, accept_update=True), 'featuring': ReleaseCorrectionField( db_table_name=RELEASES_TABLE, db_field_name='featuring', email_customer=True, accept_update=True), 'remixer': ReleaseCorrectionField( db_table_name=RELEASES_TABLE, db_field_name='remixer', email_customer=True, accept_update=True), 'producer': ReleaseCorrectionField( db_table_name=RELEASES_TABLE, db_field_name='producer', email_customer=True, accept_update=True), 'composer': ReleaseCorrectionField( db_table_name=RELEASES_TABLE, db_field_name='composer', email_customer=True, accept_update=True), 'orchestra': ReleaseCorrectionField( db_table_name=RELEASES_TABLE, db_field_name='orchestra', email_customer=True, accept_update=True), 'ensemble': ReleaseCorrectionField( db_table_name=RELEASES_TABLE, db_field_name='ensemble', email_customer=True, accept_update=True), 'conductor': ReleaseCorrectionField( db_table_name=RELEASES_TABLE, db_field_name='conductor', email_customer=True, accept_update=True), } # These are not written to DB as RC Details so # Table and Field names are not reliable. RELEASE_CORRECTION_SCHEDULING_FIELDS = { 'previewable': ReleaseCorrectionField( db_table_name=RELEASES_TABLE, db_field_name='previewable', email_customer=True, accept_update=False), 'preorderDate': ReleaseCorrectionField( db_table_name=RELEASES_TABLE, db_field_name='preorder_date', email_customer=True, accept_update=False), 'trackGrats': ReleaseCorrectionField( db_table_name=RELEASES_TABLE, db_field_name='track_grats', email_customer=True, accept_update=False), } RELEASE_CORRECTION_CARVEOUT_FIELDS = { 'carveouts': ReleaseCorrectionField( db_table_name=RELEASES_TABLE, db_field_name='carveouts', email_customer=True, accept_update=False) } RELEASE_CORRECTION_PRODUCT_FIELDS = { **RELEASE_CORRECTION_PRODUCT_SIMPLE_FIELDS, **RELEASE_CORRECTION_PRODUCT_ARTIST_FIELDS } RELEASE_CORRECTION_TRACK_SIMPLE_FIELDS = { 'trackName': ReleaseCorrectionField( db_table_name=TRACK_TABLE, db_field_name='track_name', email_customer=True, accept_update=True), 'trackVersion': ReleaseCorrectionField( db_table_name=TRACK_TABLE, db_field_name='version', email_customer=True, accept_update=True), 'explicit': ReleaseCorrectionField( db_table_name=TRACK_TABLE, db_field_name='explicit_lyrics', email_customer=True, accept_update=True), 'pInfo': ReleaseCorrectionField( db_table_name=TRACK_TABLE, db_field_name='p_line', email_customer=True, accept_update=True), 'metaLanguageCode': ReleaseCorrectionField( db_table_name=TRACK_TABLE, db_field_name='meta_language', email_customer=True, accept_update=True), 'lyrics': ReleaseCorrectionField( db_table_name=TRACK_TABLE, db_field_name='lyrics', email_customer=True, accept_update=True), 'trackNumber': ReleaseCorrectionField( db_table_name='', db_field_name='', email_customer=True, accept_update=False), 'isrc': ReleaseCorrectionField( db_table_name=TRACK_TABLE, db_field_name='isrc', email_customer=True, accept_update=False), 'recordingCountry': ReleaseCorrectionField( db_table_name=TRACK_TABLE, db_field_name='recording_country', email_customer=True, accept_update=False), 'originalRightsHolderCountry': ReleaseCorrectionField( db_table_name='', db_field_name='', email_customer=True, accept_update=False), 'ownershipRights': ReleaseCorrectionField( db_table_name=TRACK_RIGHTS_TABLE, db_field_name='rights_level', email_customer=True, accept_update=False), 'publisherNames': ReleaseCorrectionField( db_table_name=TRACK_PUBLISHER_TABLE, db_field_name='publisher_name', email_customer=True, accept_update=False), 'usPublishingObligation': ReleaseCorrectionField( db_table_name=TRACK_PUBLISHING_TABLE, db_field_name='us_publishing', email_customer=True, accept_update=False), 'trackLocalization': ReleaseCorrectionField( db_table_name=LOCALIZED_TRACK_TABLE, db_field_name='track_name', email_customer=True, accept_update=False), 'trackArtistLocalization': ReleaseCorrectionField( db_table_name=LOCALIZED_TRACK_ARTIST_TABLE, db_field_name='artist_name', email_customer=True, accept_update=False), } RELEASE_CORRECTION_TRACK_ARTIST_FIELDS = { 'performer': ReleaseCorrectionField( db_table_name=TRACK_TABLE, db_field_name='track_artist', email_customer=True, accept_update=True), 'featuring': ReleaseCorrectionField( db_table_name=TRACK_TABLE, db_field_name='featuring', email_customer=True, accept_update=True), 'remixer': ReleaseCorrectionField( db_table_name=TRACK_TABLE, db_field_name='remixer', email_customer=True, accept_update=True), 'producer': ReleaseCorrectionField( db_table_name=TRACK_TABLE, db_field_name='producer', email_customer=True, accept_update=True), 'composer': ReleaseCorrectionField( db_table_name=TRACK_TABLE, db_field_name='track_artist', email_customer=True, accept_update=True), 'orchestra': ReleaseCorrectionField( db_table_name=TRACK_TABLE, db_field_name='orchestra', email_customer=True, accept_update=True), 'ensemble': ReleaseCorrectionField( db_table_name=TRACK_TABLE, db_field_name='ensemble', email_customer=True, accept_update=True), 'conductor': ReleaseCorrectionField( db_table_name=TRACK_TABLE, db_field_name='conductor', email_customer=True, accept_update=True), } RELEASE_CORRECTION_TRACK_WRITER_FIELDS = { 'writer': ReleaseCorrectionField( db_table_name=TRACK_TABLE, db_field_name='track_writer', email_customer=True, accept_update=True) } RELEASE_CORRECTION_TRACK_PERFORMER_FIELDS = { 'performers': ReleaseCorrectionField( db_table_name=TRACK_TABLE, db_field_name='performers', email_customer=False, accept_update=True) } RELEASE_CORRECTION_TRACK_PARTICIPANT_FIELDS = { 'participants': ReleaseCorrectionField( db_table_name=TRACK_TABLE, db_field_name='participants', email_customer=False, accept_update=True) } RELEASE_CORRECTION_TRACK_FIELDS = { **RELEASE_CORRECTION_TRACK_SIMPLE_FIELDS, **RELEASE_CORRECTION_TRACK_ARTIST_FIELDS, **RELEASE_CORRECTION_TRACK_WRITER_FIELDS, **RELEASE_CORRECTION_TRACK_PERFORMER_FIELDS, **RELEASE_CORRECTION_TRACK_PARTICIPANT_FIELDS, }