Get row and track from playlist.tracks with tests
This commit is contained in:
parent
ab9955b88a
commit
b92a0927f8
@ -9,7 +9,7 @@ from datetime import datetime
|
|||||||
from mutagen.flac import FLAC
|
from mutagen.flac import FLAC
|
||||||
from mutagen.mp3 import MP3
|
from mutagen.mp3 import MP3
|
||||||
from sqlalchemy.ext.associationproxy import association_proxy
|
from sqlalchemy.ext.associationproxy import association_proxy
|
||||||
from sqlalchemy.ext.declarative import declarative_base
|
from sqlalchemy.ext.declarative import declarative_base, DeclarativeMeta
|
||||||
from sqlalchemy import (
|
from sqlalchemy import (
|
||||||
Boolean,
|
Boolean,
|
||||||
Column,
|
Column,
|
||||||
@ -21,8 +21,9 @@ from sqlalchemy import (
|
|||||||
func
|
func
|
||||||
)
|
)
|
||||||
from sqlalchemy.exc import IntegrityError
|
from sqlalchemy.exc import IntegrityError
|
||||||
from sqlalchemy.orm.exc import MultipleResultsFound, NoResultFound
|
|
||||||
from sqlalchemy.orm import backref, relationship, sessionmaker, scoped_session
|
from sqlalchemy.orm import backref, relationship, sessionmaker, scoped_session
|
||||||
|
from sqlalchemy.orm.collections import attribute_mapped_collection
|
||||||
|
from sqlalchemy.orm.exc import MultipleResultsFound, NoResultFound
|
||||||
|
|
||||||
from app.config import Config
|
from app.config import Config
|
||||||
from app.helpers import (
|
from app.helpers import (
|
||||||
@ -237,6 +238,7 @@ class Playlists(Base):
|
|||||||
back_populates="playlist")
|
back_populates="playlist")
|
||||||
|
|
||||||
tracks = association_proxy('playlist_tracks', 'tracks')
|
tracks = association_proxy('playlist_tracks', 'tracks')
|
||||||
|
row = association_proxy('playlist_tracks', 'row')
|
||||||
|
|
||||||
def __init__(self, session, name):
|
def __init__(self, session, name):
|
||||||
self.name = name
|
self.name = name
|
||||||
@ -341,7 +343,13 @@ class PlaylistTracks(Base):
|
|||||||
track_id = Column(Integer, ForeignKey('tracks.id'), primary_key=True)
|
track_id = Column(Integer, ForeignKey('tracks.id'), primary_key=True)
|
||||||
row = Column(Integer, nullable=False)
|
row = Column(Integer, nullable=False)
|
||||||
tracks = relationship("Tracks")
|
tracks = relationship("Tracks")
|
||||||
playlist = relationship(Playlists, backref=backref("playlist_tracks"))
|
playlist = relationship(
|
||||||
|
Playlists,
|
||||||
|
backref=backref(
|
||||||
|
"playlist_tracks",
|
||||||
|
collection_class=attribute_mapped_collection("row")
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
def __init__(self, session, playlist_id, track_id, row):
|
def __init__(self, session, playlist_id, track_id, row):
|
||||||
DEBUG(f"PlaylistTracks.__init__({playlist_id=}, {track_id=}, {row=})")
|
DEBUG(f"PlaylistTracks.__init__({playlist_id=}, {track_id=}, {row=})")
|
||||||
|
|||||||
@ -172,13 +172,36 @@ def test_playlist_add_track(session):
|
|||||||
track_path = "/a/b/c"
|
track_path = "/a/b/c"
|
||||||
track = Tracks(session, track_path)
|
track = Tracks(session, track_path)
|
||||||
|
|
||||||
playlist.add_track(session, track)
|
row = 17
|
||||||
|
|
||||||
|
playlist.add_track(session, track, row)
|
||||||
|
|
||||||
assert len(playlist.tracks) == 1
|
assert len(playlist.tracks) == 1
|
||||||
playlist_track = playlist.tracks[0]
|
playlist_track = playlist.tracks[row]
|
||||||
assert playlist_track.path == track_path
|
assert playlist_track.path == track_path
|
||||||
|
|
||||||
|
|
||||||
|
def test_playlist_tracks(session):
|
||||||
|
# We need a playlist
|
||||||
|
playlist = Playlists(session, "my playlist")
|
||||||
|
|
||||||
|
# We need two tracks
|
||||||
|
track1_path = "/a/b/c"
|
||||||
|
track1_row = 17
|
||||||
|
track1 = Tracks(session, track1_path)
|
||||||
|
|
||||||
|
track2_path = "/x/y/z"
|
||||||
|
track2_row = 29
|
||||||
|
track2 = Tracks(session, track2_path)
|
||||||
|
|
||||||
|
playlist.add_track(session, track1, track1_row)
|
||||||
|
playlist.add_track(session, track2, track2_row)
|
||||||
|
|
||||||
|
tracks = playlist.tracks
|
||||||
|
assert tracks[track1_row] == track1
|
||||||
|
assert tracks[track2_row] == track2
|
||||||
|
|
||||||
|
|
||||||
def test_playlist_open_and_close(session):
|
def test_playlist_open_and_close(session):
|
||||||
|
|
||||||
# We need a playlist
|
# We need a playlist
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user