From 6432928b7d2d12aa01084f76cb61d5396fde5d62 Mon Sep 17 00:00:00 2001 From: Tim Turner Date: Wed, 1 Mar 2017 17:30:48 -0500 Subject: [PATCH 1/5] Ensure collection is synced before opening movieDetails --- src/UI/Movies/MoviesController.js | 33 +++++++++++++++++++------------ 1 file changed, 20 insertions(+), 13 deletions(-) diff --git a/src/UI/Movies/MoviesController.js b/src/UI/Movies/MoviesController.js index 1728d45ab..271ec2d6f 100644 --- a/src/UI/Movies/MoviesController.js +++ b/src/UI/Movies/MoviesController.js @@ -5,7 +5,6 @@ var MoviesCollection = require('./MoviesCollection'); var MoviesCollectionClient = require('./MoviesCollectionClient'); var MoviesIndexLayout = require('./Index/MoviesIndexLayout'); var MoviesDetailsLayout = require('./Details/MoviesDetailsLayout'); -var SeriesDetailsLayout = require('../Series/Details/SeriesDetailsLayout'); module.exports = NzbDroneController.extend({ _originalInit : NzbDroneController.prototype.initialize, @@ -24,17 +23,25 @@ module.exports = NzbDroneController.extend({ }, seriesDetails : function(query) { - var series = MoviesCollectionClient.fullCollection.where({ titleSlug : query }); - if (series.length !== 0) { - var targetMovie = series[0]; - console.log(AppLayout.mainRegion); - - this.setTitle(targetMovie.get('title')); - //this.showNotFound(); - //this.showMainRegion(new SeriesDetailsLayout({model : targetMovie})); - this.showMainRegion(new MoviesDetailsLayout({ model : targetMovie })); - } else { - this.showNotFound(); - } + if(MoviesCollectionClient.fullCollection.length > 0) { + this._renderMovieDetails(query); + } else { + this.listenTo(MoviesCollectionClient, 'sync', function(model, options) { + this._renderMovieDetails(query); + }); + } + }, + + + _renderMovieDetails: function(query) { + var movies = MoviesCollectionClient.fullCollection.where({ titleSlug : query }); + if (movies.length !== 0) { + var targetMovie = movies[0]; + + this.setTitle(targetMovie.get('title')); + this.showMainRegion(new MoviesDetailsLayout({ model : targetMovie })); + } else { + this.showNotFound(); + } } }); From 7122962dc8af968c833be35e96349836c037cd88 Mon Sep 17 00:00:00 2001 From: Devin Buhl Date: Wed, 1 Mar 2017 18:45:12 -0500 Subject: [PATCH 2/5] Date added in Movie List & Possible Fix for Importing Movies. (#969) * Is there a need to lazyload? * Update dates in movie list * additional check for moviefile lazy load * lazyload not needed... --- .../MediaFiles/UpgradeMediaFileService.cs | 35 ++++++------------- src/UI/Movies/Index/MoviesIndexLayout.js | 14 +++++--- .../SeriesOverviewItemViewTemplate.hbs | 4 ++- 3 files changed, 24 insertions(+), 29 deletions(-) diff --git a/src/NzbDrone.Core/MediaFiles/UpgradeMediaFileService.cs b/src/NzbDrone.Core/MediaFiles/UpgradeMediaFileService.cs index fb00c5c89..4e0d8322a 100644 --- a/src/NzbDrone.Core/MediaFiles/UpgradeMediaFileService.cs +++ b/src/NzbDrone.Core/MediaFiles/UpgradeMediaFileService.cs @@ -36,42 +36,29 @@ namespace NzbDrone.Core.MediaFiles _logger = logger; } - public MovieFileMoveResult UpgradeMovieFile(MovieFile episodeFile, LocalMovie localEpisode, bool copyOnly = false) + public MovieFileMoveResult UpgradeMovieFile(MovieFile movieFile, LocalMovie localMovie, bool copyOnly = false) { - _logger.Trace("Upgrading existing episode file."); + _logger.Trace("Upgrading existing movie file."); var moveFileResult = new MovieFileMoveResult(); - localEpisode.Movie.MovieFile.LazyLoad(); - var existingFile = localEpisode.Movie.MovieFile; - existingFile.LazyLoad(); - if (existingFile.IsLoaded && existingFile.Value != null) - { - var file = existingFile.Value; - var episodeFilePath = Path.Combine(localEpisode.Movie.Path, file.RelativePath); - - if (_diskProvider.FileExists(episodeFilePath)) - { - _logger.Debug("Removing existing episode file: {0}", file); - _recycleBinProvider.DeleteFile(episodeFilePath); - } + var existingFile = localMovie.Movie.MovieFile.Value; + var movieFilePath = Path.Combine(localMovie.Movie.Path, existingFile.RelativePath); - moveFileResult.OldFiles.Add(file); - _mediaFileService.Delete(file, DeleteMediaFileReason.Upgrade); - } - else + if (_diskProvider.FileExists(movieFilePath)) { - //_logger.Warn("The existing movie file was not lazy loaded."); + _logger.Debug("Removing existing movie file: {0}", existingFile); + _recycleBinProvider.DeleteFile(movieFilePath); } - - + moveFileResult.OldFiles.Add(existingFile); + _mediaFileService.Delete(existingFile, DeleteMediaFileReason.Upgrade); if (copyOnly) { - moveFileResult.MovieFile = _movieFileMover.CopyMovieFile(episodeFile, localEpisode); + moveFileResult.MovieFile = _movieFileMover.CopyMovieFile(movieFile, localMovie); } else { - moveFileResult.MovieFile= _movieFileMover.MoveMovieFile(episodeFile, localEpisode); + moveFileResult.MovieFile = _movieFileMover.MoveMovieFile(movieFile, localMovie); } return moveFileResult; diff --git a/src/UI/Movies/Index/MoviesIndexLayout.js b/src/UI/Movies/Index/MoviesIndexLayout.js index 8efd0756c..38459e815 100644 --- a/src/UI/Movies/Index/MoviesIndexLayout.js +++ b/src/UI/Movies/Index/MoviesIndexLayout.js @@ -6,7 +6,8 @@ var ListCollectionView = require('./Overview/SeriesOverviewCollectionView'); var EmptyView = require('./EmptyView'); var MoviesCollection = require('../MoviesCollection'); //var FullMovieCollection = require('../FullMovieCollection'); -var InCinemasCell = require('../../Cells/InCinemasCell'); +//var InCinemasCell = require('../../Cells/InCinemasCell'); +var RelativeDateCell = require('../../Cells/RelativeDateCell'); var MovieTitleCell = require('../../Cells/MovieTitleCell'); var TemplatedCell = require('../../Cells/TemplatedCell'); var ProfileCell = require('../../Cells/ProfileCell'); @@ -52,6 +53,11 @@ module.exports = Marionette.Layout.extend({ cell : MovieTitleCell, cellValue : 'this', }, + { + name : 'added', + label : 'Date Added', + cell : RelativeDateCell + }, { name : "downloadedQuality", label : "Downloaded", @@ -66,7 +72,7 @@ module.exports = Marionette.Layout.extend({ { name : 'inCinemas', label : 'In Cinemas', - cell : InCinemasCell + cell : RelativeDateCell }, { name : 'this', @@ -194,9 +200,9 @@ module.exports = Marionette.Layout.extend({ title : 'Title', name : 'title' }, - { + { title: 'Downloaded', - name: 'downloadedQuality' + name: 'downloadedQuality' }, { title : 'Profile', diff --git a/src/UI/Movies/Index/Overview/SeriesOverviewItemViewTemplate.hbs b/src/UI/Movies/Index/Overview/SeriesOverviewItemViewTemplate.hbs index 18033cc04..f23658fa3 100644 --- a/src/UI/Movies/Index/Overview/SeriesOverviewItemViewTemplate.hbs +++ b/src/UI/Movies/Index/Overview/SeriesOverviewItemViewTemplate.hbs @@ -37,7 +37,9 @@
{{GetStatus}} - {{ShortDate inCinemas}} + {{#if inCinemas}} + {{RelativeDate inCinemas}} + {{/if}} {{profile profileId}} From dfcdf8871c3eb82ca3b979334d880179bcee2d2e Mon Sep 17 00:00:00 2001 From: Marcelo Castagna Date: Wed, 1 Mar 2017 20:45:52 -0300 Subject: [PATCH 3/5] Fixed infinite loop. Added default destination test when adding client (#968) removed empty spaces. changed dcaex => ex Changed error message changed error message Wrong message, ups Another message --- .../Proxies/DiskStationProxyBase.cs | 18 ++++++++++++------ .../DownloadStation/TorrentDownloadStation.cs | 19 +++++++++++++++++-- .../DownloadStation/UsenetDownloadStation.cs | 19 +++++++++++++++++-- 3 files changed, 46 insertions(+), 10 deletions(-) diff --git a/src/NzbDrone.Core/Download/Clients/DownloadStation/Proxies/DiskStationProxyBase.cs b/src/NzbDrone.Core/Download/Clients/DownloadStation/Proxies/DiskStationProxyBase.cs index 7a6538970..edaa2ebf6 100644 --- a/src/NzbDrone.Core/Download/Clients/DownloadStation/Proxies/DiskStationProxyBase.cs +++ b/src/NzbDrone.Core/Download/Clients/DownloadStation/Proxies/DiskStationProxyBase.cs @@ -49,7 +49,7 @@ namespace NzbDrone.Core.Download.Clients.DownloadStation.Proxies { if (retries == 5) { - throw new DownloadClientException("Try to process same request more than 5 times"); + throw new DownloadClientException("Try to process request to {0} with {1} more than 5 times", api, arguments.ToJson().ToString()); } if (!_authenticated && api != DiskStationApi.Info && api != DiskStationApi.DSMInfo) @@ -72,15 +72,21 @@ namespace NzbDrone.Core.Download.Clients.DownloadStation.Proxies } else { + var msg = $"Failed to {operation}. Reason: {responseContent.Error.GetMessage(api)}"; + _logger.Error(msg); + if (responseContent.Error.SessionError) { _authenticated = false; - return ProcessRequest(api, arguments, settings, operation, method, retries++); - } - - var msg = $"Failed to {operation}. Reason: {responseContent.Error.GetMessage(api)}"; - _logger.Error(msg); + if (responseContent.Error.Code == 105) + { + throw new DownloadClientAuthenticationException(msg); + } + + return ProcessRequest(api, arguments, settings, operation, method, ++retries); + } + throw new DownloadClientException(msg); } } diff --git a/src/NzbDrone.Core/Download/Clients/DownloadStation/TorrentDownloadStation.cs b/src/NzbDrone.Core/Download/Clients/DownloadStation/TorrentDownloadStation.cs index d3161c428..79d0f042b 100644 --- a/src/NzbDrone.Core/Download/Clients/DownloadStation/TorrentDownloadStation.cs +++ b/src/NzbDrone.Core/Download/Clients/DownloadStation/TorrentDownloadStation.cs @@ -282,7 +282,17 @@ namespace NzbDrone.Core.Download.Clients.DownloadStation { try { - var downloadDir = GetDownloadDirectory(); + var downloadDir = GetDefaultDir(); + + if (downloadDir == null) + { + return new NzbDroneValidationFailure(nameof(Settings.TvDirectory), "No default destination") + { + DetailedDescription = $"You must login into your Diskstation as {Settings.Username} and manually set it up into DownloadStation settings under BT/HTTP/FTP/NZB -> Location." + }; + } + + downloadDir = GetDownloadDirectory(); if (downloadDir != null) { @@ -295,7 +305,7 @@ namespace NzbDrone.Core.Download.Clients.DownloadStation { return new NzbDroneValidationFailure(fieldName, $"Shared folder does not exist") { - DetailedDescription = $"The DownloadStation does not have a Shared Folder with the name '{sharedFolder}', are you sure you specified it correctly?" + DetailedDescription = $"The Diskstation does not have a Shared Folder with the name '{sharedFolder}', are you sure you specified it correctly?" }; } @@ -310,6 +320,11 @@ namespace NzbDrone.Core.Download.Clients.DownloadStation return null; } + catch (DownloadClientAuthenticationException ex) // User could not have permission to access to downloadstation + { + _logger.Error(ex); + return new NzbDroneValidationFailure(string.Empty, ex.Message); + } catch (Exception ex) { _logger.Error(ex); diff --git a/src/NzbDrone.Core/Download/Clients/DownloadStation/UsenetDownloadStation.cs b/src/NzbDrone.Core/Download/Clients/DownloadStation/UsenetDownloadStation.cs index 65b6c0440..3348077d2 100644 --- a/src/NzbDrone.Core/Download/Clients/DownloadStation/UsenetDownloadStation.cs +++ b/src/NzbDrone.Core/Download/Clients/DownloadStation/UsenetDownloadStation.cs @@ -195,7 +195,17 @@ namespace NzbDrone.Core.Download.Clients.DownloadStation { try { - var downloadDir = GetDownloadDirectory(); + var downloadDir = GetDefaultDir(); + + if (downloadDir == null) + { + return new NzbDroneValidationFailure(nameof(Settings.TvDirectory), "No default destination") + { + DetailedDescription = $"You must login into your Diskstation as {Settings.Username} and manually set it up into DownloadStation settings under BT/HTTP/FTP/NZB -> Location." + }; + } + + downloadDir = GetDownloadDirectory(); if (downloadDir != null) { @@ -208,7 +218,7 @@ namespace NzbDrone.Core.Download.Clients.DownloadStation { return new NzbDroneValidationFailure(fieldName, $"Shared folder does not exist") { - DetailedDescription = $"The DownloadStation does not have a Shared Folder with the name '{sharedFolder}', are you sure you specified it correctly?" + DetailedDescription = $"The Diskstation does not have a Shared Folder with the name '{sharedFolder}', are you sure you specified it correctly?" }; } @@ -223,6 +233,11 @@ namespace NzbDrone.Core.Download.Clients.DownloadStation return null; } + catch (DownloadClientAuthenticationException ex) // User could not have permission to access to downloadstation + { + _logger.Error(ex); + return new NzbDroneValidationFailure(string.Empty, ex.Message); + } catch (Exception ex) { _logger.Error(ex); From d84e6c84f5f9071a6adda0667eec6e805072704a Mon Sep 17 00:00:00 2001 From: Devin Buhl Date: Wed, 1 Mar 2017 20:20:42 -0500 Subject: [PATCH 4/5] Hotfix when importing movie (#971) --- .../MediaFiles/UpgradeMediaFileService.cs | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/src/NzbDrone.Core/MediaFiles/UpgradeMediaFileService.cs b/src/NzbDrone.Core/MediaFiles/UpgradeMediaFileService.cs index 4e0d8322a..53dcd6462 100644 --- a/src/NzbDrone.Core/MediaFiles/UpgradeMediaFileService.cs +++ b/src/NzbDrone.Core/MediaFiles/UpgradeMediaFileService.cs @@ -42,16 +42,21 @@ namespace NzbDrone.Core.MediaFiles var moveFileResult = new MovieFileMoveResult(); var existingFile = localMovie.Movie.MovieFile.Value; - var movieFilePath = Path.Combine(localMovie.Movie.Path, existingFile.RelativePath); - if (_diskProvider.FileExists(movieFilePath)) + if (existingFile != null) { - _logger.Debug("Removing existing movie file: {0}", existingFile); - _recycleBinProvider.DeleteFile(movieFilePath); + var movieFilePath = Path.Combine(localMovie.Movie.Path, existingFile.RelativePath); + + if (_diskProvider.FileExists(movieFilePath)) + { + _logger.Debug("Removing existing movie file: {0}", existingFile); + _recycleBinProvider.DeleteFile(movieFilePath); + } + + moveFileResult.OldFiles.Add(existingFile); + _mediaFileService.Delete(existingFile, DeleteMediaFileReason.Upgrade); } - moveFileResult.OldFiles.Add(existingFile); - _mediaFileService.Delete(existingFile, DeleteMediaFileReason.Upgrade); if (copyOnly) { moveFileResult.MovieFile = _movieFileMover.CopyMovieFile(movieFile, localMovie); From 349dd12161b3f583a072321a88851561797806e8 Mon Sep 17 00:00:00 2001 From: Devin Buhl Date: Wed, 1 Mar 2017 21:22:36 -0500 Subject: [PATCH 5/5] Possible fix for Custom script (#973) --- .../Notifications/CustomScript/CustomScript.cs | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/NzbDrone.Core/Notifications/CustomScript/CustomScript.cs b/src/NzbDrone.Core/Notifications/CustomScript/CustomScript.cs index 8ff95a672..dda6e2e6d 100644 --- a/src/NzbDrone.Core/Notifications/CustomScript/CustomScript.cs +++ b/src/NzbDrone.Core/Notifications/CustomScript/CustomScript.cs @@ -31,17 +31,17 @@ namespace NzbDrone.Core.Notifications.CustomScript { var movie = message.Movie; var remoteMovie = message.RemoteMovie; - var releaseGroup = remoteMovie.ParsedMovieInfo.ReleaseGroup; var environmentVariables = new StringDictionary(); environmentVariables.Add("Radarr_EventType", "Grab"); environmentVariables.Add("Radarr_Movie_Id", movie.Id.ToString()); environmentVariables.Add("Radarr_Movie_Title", movie.Title); - environmentVariables.Add("Radarr_Movie_ImdbId", movie.ImdbId.ToString()); + environmentVariables.Add("Radarr_Movie_ImdbId", movie.ImdbId); + environmentVariables.Add("Radarr_Movie_TmdbId", movie.TmdbId.ToString()); environmentVariables.Add("Radarr_Release_Title", remoteMovie.Release.Title); environmentVariables.Add("Radarr_Release_Indexer", remoteMovie.Release.Indexer); environmentVariables.Add("Radarr_Release_Size", remoteMovie.Release.Size.ToString()); - environmentVariables.Add("Radarr_Release_ReleaseGroup", releaseGroup); + environmentVariables.Add("Radarr_Release_ReleaseGroup", remoteMovie.ParsedMovieInfo.ReleaseGroup ?? string.Empty); ExecuteScript(environmentVariables); } @@ -57,7 +57,8 @@ namespace NzbDrone.Core.Notifications.CustomScript environmentVariables.Add("Radarr_Movie_Id", movie.Id.ToString()); environmentVariables.Add("Radarr_Movie_Title", movie.Title); environmentVariables.Add("Radarr_Movie_Path", movie.Path); - environmentVariables.Add("Radarr_Movie_ImdbId", movie.ImdbId.ToString()); + environmentVariables.Add("Radarr_Movie_ImdbId", movie.ImdbId); + environmentVariables.Add("Radarr_Movie_TmdbId", movie.TmdbId.ToString()); environmentVariables.Add("Radarr_MovieFile_Id", movieFile.Id.ToString()); environmentVariables.Add("Radarr_MovieFile_RelativePath", movieFile.RelativePath); environmentVariables.Add("Radarr_MovieFile_Path", Path.Combine(movie.Path, movieFile.RelativePath)); @@ -79,7 +80,9 @@ namespace NzbDrone.Core.Notifications.CustomScript environmentVariables.Add("Radarr_Movie_Id", movie.Id.ToString()); environmentVariables.Add("Radarr_Movie_Title", movie.Title); environmentVariables.Add("Radarr_Movie_Path", movie.Path); - environmentVariables.Add("Radarr_Movie_TvdbId", movie.ImdbId.ToString()); + environmentVariables.Add("Radarr_Movie_ImdbId", movie.ImdbId); + environmentVariables.Add("Radarr_Movie_TmdbId", movie.TmdbId.ToString()); + ExecuteScript(environmentVariables); }