-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathpublished_track.py
35 lines (28 loc) · 1.08 KB
/
published_track.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
from dataclasses import dataclass
from datetime import timedelta
from typing import TYPE_CHECKING
if TYPE_CHECKING:
from models.podcast import Podcast
from models.published_provider_track import PublishedProviderTrack
from models.track_source import TrackSource
@dataclass
class PublishedTrack:
"""
Объект, представляющий агрегацию опубликованных треков провайдеров -
создается на основании нескольких опубликованных
"""
title: str
description: str
duration: timedelta
podcast: 'Podcast'
provider_tracks: list['PublishedProviderTrack']
# Рудимент - раньше хотел для каждого добавить тэги (backend, analytics, lifestyle и т.д.),
# но остановился на одном названии.
tags: list[str]
@property
def sources(self) -> list['TrackSource']:
return [
pt.create_track_source()
for pt
in self.provider_tracks
]