"""releases module.""" from artist.connectors import mysql from artist.models.release_artist import ReleaseArtist from artist.models.track import Track from artist.models.track_artist import TrackArtist from artist.models.track_writer import TrackWriter from artist.response import Response def get_artists(product_id): """Return all artists in a release.""" with mysql.db_session() as session: # Get all artists associated with this release. release_artists = session.query(ReleaseArtist)\ .filter_by(release_id=product_id)\ .all() # Get all artists associated with a track in this release. track_ids = [ track.id for track in session.query(Track).filter_by(release_id=product_id).all() ] if track_ids: track_artists = session.query(TrackArtist)\ .filter(TrackArtist.track_id.in_(track_ids))\ .all() track_writers = session.query(TrackWriter)\ .filter(TrackWriter.unique_track_id.in_(track_ids))\ .all() else: track_artists = [] track_writers = [] # Build the response. release_artist_list = [] for release_artist in release_artists: release_artist_dict = release_artist.to_dict() release_artist_list.append(release_artist_dict) track_artist_list = [] for track_artist in track_artists: track_artist_dict = track_artist.to_dict() track_artist_list.append(track_artist_dict) track_writer_list = [] for track_writer in track_writers: track_writer_dict = track_writer.to_dict() track_writer_list.append(track_writer_dict) return Response(message={ 'release_artists': release_artist_list, 'track_artists': track_artist_list, 'track_writers': track_writer_list })