Skip to content

Commit 5bc8c01

Browse files
Support access_authorities in entity manager (#13810)
1 parent a7a9e17 commit 5bc8c01

4 files changed

Lines changed: 21 additions & 0 deletions

File tree

packages/discovery-provider/src/models/tracks/track.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,7 @@ class Track(Base, RepresentableMixin):
8383
slot = Column(Integer)
8484
is_available = Column(Boolean, nullable=False, server_default=text("true"))
8585
allowed_api_keys = Column(ARRAY(String))
86+
access_authorities = Column(ARRAY(String))
8687
is_stream_gated = Column(Boolean, nullable=False, server_default=text("false"))
8788
stream_conditions = Column(JSONB(True))
8889
is_download_gated = Column(Boolean, nullable=False, server_default=text("false"))

packages/discovery-provider/src/tasks/entity_manager/entities/track.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -274,6 +274,16 @@ def populate_track_record_metadata(track_record: Track, track_metadata, handle,
274274
api_key.lower()
275275
for api_key in track_metadata["allowed_api_keys"]
276276
]
277+
elif key == "access_authorities":
278+
if key in track_metadata:
279+
if track_metadata[key] is None:
280+
track_record.access_authorities = None
281+
elif isinstance(track_metadata[key], list):
282+
track_record.access_authorities = [
283+
str(addr).strip()
284+
for addr in track_metadata["access_authorities"]
285+
if isinstance(addr, str)
286+
]
277287
elif key == "stem_of":
278288
if "stem_of" in track_metadata and is_valid_json_field(
279289
track_metadata, "stem_of"

packages/discovery-provider/src/tasks/entity_manager/utils.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -432,6 +432,14 @@ def parse_metadata(metadata: str, action: str, entity_type: str):
432432
cid = data["cid"]
433433
metadata_json = data["data"]
434434

435+
if entity_type == EntityType.TRACK and "access_authorities" in data:
436+
if (
437+
"access_authorities" not in metadata_json
438+
or metadata_json["access_authorities"] is None
439+
):
440+
metadata_json = dict(metadata_json)
441+
metadata_json["access_authorities"] = data["access_authorities"]
442+
435443
# Don't format metadata for UPDATEs
436444
# This is to support partial updates
437445
# Individual entities are responsible for updating existing records with metadata

packages/discovery-provider/src/tasks/metadata.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,7 @@ class TrackMetadata(TypedDict):
142142
producer_copyright_line: Optional[Copyright]
143143
parental_warning_type: Optional[str]
144144
allowed_api_keys: Optional[str]
145+
access_authorities: Optional[List[str]]
145146
bpm: Optional[float]
146147
is_custom_bpm: Optional[bool]
147148
musical_key: Optional[str]
@@ -203,6 +204,7 @@ class TrackMetadata(TypedDict):
203204
"producer_copyright_line": None,
204205
"parental_warning_type": None,
205206
"allowed_api_keys": None,
207+
"access_authorities": None,
206208
"bpm": None,
207209
"is_custom_bpm": False,
208210
"musical_key": None,

0 commit comments

Comments
 (0)