From b963f2aa827e3ad95db45ea19cb4cf65914ef427 Mon Sep 17 00:00:00 2001 From: Qstick Date: Sat, 7 Oct 2017 00:13:00 -0400 Subject: [PATCH] Add prelim work for Album Filtering --- .../AddNewArtist/AddNewArtistModalContent.js | 30 ++++++++++++++++--- .../AddNewArtistModalContentConnector.js | 6 ++++ .../src/Store/Reducers/addArtistReducers.js | 2 ++ .../createImportArtistItemSelector.js | 2 +- frontend/src/Utilities/Series/getNewSeries.js | 4 +++ src/Lidarr.Api.V3/Artist/ArtistResource.cs | 7 +++++ .../Migration/120_artist_album_types.cs | 21 +++++++++++++ src/NzbDrone.Core/Music/Artist.cs | 4 +++ src/NzbDrone.Core/NzbDrone.Core.csproj | 1 + 9 files changed, 72 insertions(+), 5 deletions(-) create mode 100644 src/NzbDrone.Core/Datastore/Migration/120_artist_album_types.cs diff --git a/frontend/src/AddArtist/AddNewArtist/AddNewArtistModalContent.js b/frontend/src/AddArtist/AddNewArtist/AddNewArtistModalContent.js index aa7ffb159..e97824564 100644 --- a/frontend/src/AddArtist/AddNewArtist/AddNewArtistModalContent.js +++ b/frontend/src/AddArtist/AddNewArtist/AddNewArtistModalContent.js @@ -56,7 +56,6 @@ class AddNewArtistModalContent extends Component { render() { const { artistName, - // year, overview, images, isAdding, @@ -64,8 +63,9 @@ class AddNewArtistModalContent extends Component { monitor, qualityProfileId, languageProfileId, - // seriesType, albumFolder, + primaryAlbumTypes, + secondaryAlbumTypes, tags, showLanguageProfile, isSmallScreen, @@ -167,6 +167,28 @@ class AddNewArtistModalContent extends Component { /> + + Primary Album Types + + + + + + Secondary Album Types + + + + Tags @@ -213,7 +235,6 @@ class AddNewArtistModalContent extends Component { AddNewArtistModalContent.propTypes = { artistName: PropTypes.string.isRequired, - // year: PropTypes.number.isRequired, overview: PropTypes.string, images: PropTypes.arrayOf(PropTypes.object).isRequired, isAdding: PropTypes.bool.isRequired, @@ -222,8 +243,9 @@ AddNewArtistModalContent.propTypes = { monitor: PropTypes.object.isRequired, qualityProfileId: PropTypes.object, languageProfileId: PropTypes.object, - // seriesType: PropTypes.object.isRequired, albumFolder: PropTypes.object.isRequired, + primaryAlbumTypes: PropTypes.object.isRequired, + secondaryAlbumTypes: PropTypes.object.isRequired, tags: PropTypes.object.isRequired, showLanguageProfile: PropTypes.bool.isRequired, isSmallScreen: PropTypes.bool.isRequired, diff --git a/frontend/src/AddArtist/AddNewArtist/AddNewArtistModalContentConnector.js b/frontend/src/AddArtist/AddNewArtist/AddNewArtistModalContentConnector.js index 2a607f047..b971432c3 100644 --- a/frontend/src/AddArtist/AddNewArtist/AddNewArtistModalContentConnector.js +++ b/frontend/src/AddArtist/AddNewArtist/AddNewArtistModalContentConnector.js @@ -60,6 +60,8 @@ class AddNewArtistModalContentConnector extends Component { qualityProfileId, languageProfileId, albumFolder, + primaryAlbumTypes, + secondaryAlbumTypes, tags } = this.props; @@ -70,6 +72,8 @@ class AddNewArtistModalContentConnector extends Component { qualityProfileId: qualityProfileId.value, languageProfileId: languageProfileId.value, albumFolder: albumFolder.value, + primaryAlbumTypes: primaryAlbumTypes.value, + secondaryAlbumTypes: secondaryAlbumTypes.value, tags: tags.value, searchForMissingAlbums }); @@ -96,6 +100,8 @@ AddNewArtistModalContentConnector.propTypes = { qualityProfileId: PropTypes.object, languageProfileId: PropTypes.object, albumFolder: PropTypes.object.isRequired, + primaryAlbumTypes: PropTypes.object.isRequired, + secondaryAlbumTypes: PropTypes.object.isRequired, tags: PropTypes.object.isRequired, onModalClose: PropTypes.func.isRequired, setAddArtistDefault: PropTypes.func.isRequired, diff --git a/frontend/src/Store/Reducers/addArtistReducers.js b/frontend/src/Store/Reducers/addArtistReducers.js index ea5b36949..fc1d0aa61 100644 --- a/frontend/src/Store/Reducers/addArtistReducers.js +++ b/frontend/src/Store/Reducers/addArtistReducers.js @@ -23,6 +23,8 @@ export const defaultState = { qualityProfileId: 0, languageProfileId: 0, seriesType: 'standard', + primaryAlbumTypes: 'Studio, Single', + secondaryAlbumTypes: '', albumFolder: true, tags: [] } diff --git a/frontend/src/Store/Selectors/createImportArtistItemSelector.js b/frontend/src/Store/Selectors/createImportArtistItemSelector.js index 22f962012..ba136b06b 100644 --- a/frontend/src/Store/Selectors/createImportArtistItemSelector.js +++ b/frontend/src/Store/Selectors/createImportArtistItemSelector.js @@ -17,7 +17,7 @@ function createImportArtistItemSelector() { defaultMonitor: addArtist.defaults.monitor, defaultQualityProfileId: addArtist.defaults.qualityProfileId, defaultSeriesType: addArtist.defaults.seriesType, - defaultSeasonFolder: addArtist.defaults.seasonFolder, + defaultSeasonFolder: addArtist.defaults.albumFolder, ...item, isExistingArtist }; diff --git a/frontend/src/Utilities/Series/getNewSeries.js b/frontend/src/Utilities/Series/getNewSeries.js index d89dc3a10..9d98b9427 100644 --- a/frontend/src/Utilities/Series/getNewSeries.js +++ b/frontend/src/Utilities/Series/getNewSeries.js @@ -8,6 +8,8 @@ function getNewSeries(series, payload) { languageProfileId, artistType, albumFolder, + primaryAlbumTypes, + secondaryAlbumTypes, tags, searchForMissingAlbums = false } = payload; @@ -26,6 +28,8 @@ function getNewSeries(series, payload) { series.rootFolderPath = rootFolderPath; series.artistType = artistType; series.albumFolder = albumFolder; + series.primaryAlbumTypes = primaryAlbumTypes; + series.secondaryAlbumTypes = secondaryAlbumTypes; series.tags = tags; return series; diff --git a/src/Lidarr.Api.V3/Artist/ArtistResource.cs b/src/Lidarr.Api.V3/Artist/ArtistResource.cs index 61fd70f35..96e53b7e1 100644 --- a/src/Lidarr.Api.V3/Artist/ArtistResource.cs +++ b/src/Lidarr.Api.V3/Artist/ArtistResource.cs @@ -29,6 +29,8 @@ namespace Lidarr.Api.V3.Artist public string Overview { get; set; } public string ArtistType { get; set; } public string Disambiguation { get; set; } + public string PrimaryAlbumTypes { get; set; } + public string SecondaryAlbumTypes { get; set; } public List Links { get; set; } public int? AlbumCount { get; set; } @@ -87,6 +89,9 @@ namespace Lidarr.Api.V3.Artist ArtistType = model.ArtistType, Disambiguation = model.Disambiguation, + PrimaryAlbumTypes = model.PrimaryAlbumTypes, + SecondaryAlbumTypes = model.SecondaryAlbumTypes, + Images = model.Images, Albums = model.Albums.ToResource(), @@ -142,6 +147,8 @@ namespace Lidarr.Api.V3.Artist ProfileId = resource.QualityProfileId, LanguageProfileId = resource.LanguageProfileId, Links = resource.Links, + PrimaryAlbumTypes = resource.PrimaryAlbumTypes, + SecondaryAlbumTypes = resource.SecondaryAlbumTypes, AlbumFolder = resource.AlbumFolder, Monitored = resource.Monitored, diff --git a/src/NzbDrone.Core/Datastore/Migration/120_artist_album_types.cs b/src/NzbDrone.Core/Datastore/Migration/120_artist_album_types.cs new file mode 100644 index 000000000..9517a6758 --- /dev/null +++ b/src/NzbDrone.Core/Datastore/Migration/120_artist_album_types.cs @@ -0,0 +1,21 @@ +using FluentMigrator; +using NzbDrone.Core.Datastore.Migration.Framework; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace NzbDrone.Core.Datastore.Migration +{ + [Migration(120)] + public class artist_album_types : NzbDroneMigrationBase + { + protected override void MainDbUpgrade() + { + Alter.Table("Artists") + .AddColumn("PrimaryAlbumTypes").AsString().Nullable() + .AddColumn("SecondaryAlbumTypes").AsString().Nullable(); + } + + } +} diff --git a/src/NzbDrone.Core/Music/Artist.cs b/src/NzbDrone.Core/Music/Artist.cs index be70ee211..c6c28b93b 100644 --- a/src/NzbDrone.Core/Music/Artist.cs +++ b/src/NzbDrone.Core/Music/Artist.cs @@ -36,6 +36,8 @@ namespace NzbDrone.Core.Music public string Overview { get; set; } public string Disambiguation { get; set; } public string ArtistType { get; set; } + public string PrimaryAlbumTypes { get; set; } + public string SecondaryAlbumTypes { get; set; } public bool Monitored { get; set; } public bool AlbumFolder { get; set; } public DateTime? LastInfoSync { get; set; } @@ -73,6 +75,8 @@ namespace NzbDrone.Core.Music LanguageProfileId = otherArtist.LanguageProfileId; Albums = otherArtist.Albums; + PrimaryAlbumTypes = otherArtist.PrimaryAlbumTypes; + SecondaryAlbumTypes = otherArtist.SecondaryAlbumTypes; ProfileId = otherArtist.ProfileId; Tags = otherArtist.Tags; diff --git a/src/NzbDrone.Core/NzbDrone.Core.csproj b/src/NzbDrone.Core/NzbDrone.Core.csproj index f6ad3a8f7..653b7342d 100644 --- a/src/NzbDrone.Core/NzbDrone.Core.csproj +++ b/src/NzbDrone.Core/NzbDrone.Core.csproj @@ -293,6 +293,7 @@ +