Merge branch 'develop'
After Width: | Height: | Size: 62 KiB |
After Width: | Height: | Size: 7.1 KiB |
After Width: | Height: | Size: 707 B |
After Width: | Height: | Size: 15 KiB |
After Width: | Height: | Size: 1.6 KiB |
After Width: | Height: | Size: 22 KiB |
After Width: | Height: | Size: 2.5 KiB |
After Width: | Height: | Size: 31 KiB |
After Width: | Height: | Size: 48 KiB |
BIN
Logo/Square.psd
|
@ -0,0 +1,54 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using FizzWare.NBuilder;
|
||||
using Moq;
|
||||
using NUnit.Framework;
|
||||
using NzbDrone.Common.Disk;
|
||||
using NzbDrone.Core.HealthCheck.Checks;
|
||||
using NzbDrone.Core.Test.Framework;
|
||||
using NzbDrone.Core.Tv;
|
||||
|
||||
namespace NzbDrone.Core.Test.HealthCheck.Checks
|
||||
{
|
||||
[TestFixture]
|
||||
public class RootFolderCheckFixture : CoreTest<RootFolderCheck>
|
||||
{
|
||||
private void GivenMissingRootFolder()
|
||||
{
|
||||
var series = Builder<Series>.CreateListOfSize(1)
|
||||
.Build()
|
||||
.ToList();
|
||||
|
||||
Mocker.GetMock<ISeriesService>()
|
||||
.Setup(s => s.GetAllSeries())
|
||||
.Returns(series);
|
||||
|
||||
Mocker.GetMock<IDiskProvider>()
|
||||
.Setup(s => s.GetParentFolder(series.First().Path))
|
||||
.Returns(@"C:\TV");
|
||||
|
||||
Mocker.GetMock<IDiskProvider>()
|
||||
.Setup(s => s.FolderExists(It.IsAny<String>()))
|
||||
.Returns(false);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void should_not_return_error_when_no_series()
|
||||
{
|
||||
Mocker.GetMock<ISeriesService>()
|
||||
.Setup(s => s.GetAllSeries())
|
||||
.Returns(new List<Series>());
|
||||
|
||||
Subject.Check().ShouldBeOk();
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void should_return_error_if_series_parent_is_missing()
|
||||
{
|
||||
GivenMissingRootFolder();
|
||||
|
||||
Subject.Check().ShouldBeError();
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,8 +1,10 @@
|
|||
using System;
|
||||
using FluentAssertions;
|
||||
using Moq;
|
||||
using NUnit.Framework;
|
||||
using NzbDrone.Common.Disk;
|
||||
using NzbDrone.Common.EnvironmentInfo;
|
||||
using NzbDrone.Core.HealthCheck;
|
||||
using NzbDrone.Core.HealthCheck.Checks;
|
||||
using NzbDrone.Core.Test.Framework;
|
||||
|
||||
|
|
|
@ -125,6 +125,7 @@
|
|||
<Compile Include="Framework\CoreTest.cs" />
|
||||
<Compile Include="Framework\DbTest.cs" />
|
||||
<Compile Include="Framework\NBuilderExtensions.cs" />
|
||||
<Compile Include="HealthCheck\Checks\RootFolderCheckFixture.cs" />
|
||||
<Compile Include="HealthCheck\Checks\DownloadClientCheckFixture.cs" />
|
||||
<Compile Include="HealthCheck\Checks\UpdateCheckFixture.cs" />
|
||||
<Compile Include="HealthCheck\Checks\IndexerCheckFixture.cs" />
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
using System;
|
||||
using System.Linq;
|
||||
using FluentAssertions;
|
||||
using NUnit.Framework;
|
||||
using NzbDrone.Core.Qualities;
|
||||
|
@ -105,6 +104,7 @@ namespace NzbDrone.Core.Test.ParserTests
|
|||
[TestCase("Sonny.With.a.Chance.S02E15.720p.WEB-DL.DD5.1.H.264-SURFER", false)]
|
||||
[TestCase("S07E23 - [WEBDL].mkv ", false)]
|
||||
[TestCase("Fringe S04E22 720p WEB-DL DD5.1 H264-EbP.mkv", false)]
|
||||
[TestCase("House.S04.720p.Web-Dl.Dd5.1.h264-P2PACK", false)]
|
||||
public void should_parse_webdl720p_quality(string title, bool proper)
|
||||
{
|
||||
ParseAndVerifyQuality(title, Quality.WEBDL720p, proper);
|
||||
|
|
|
@ -19,10 +19,10 @@ namespace NzbDrone.Core.HealthCheck.Checks
|
|||
public override HealthCheck Check()
|
||||
{
|
||||
var missingRootFolders = _seriesService.GetAllSeries()
|
||||
.Select(s => _diskProvider.GetParentFolder(s.Path))
|
||||
.Distinct()
|
||||
.Where(s => !_diskProvider.FolderExists(s))
|
||||
.ToList();
|
||||
.Select(s => _diskProvider.GetParentFolder(s.Path))
|
||||
.Distinct()
|
||||
.Where(s => !_diskProvider.FolderExists(s))
|
||||
.ToList();
|
||||
|
||||
if (missingRootFolders.Any())
|
||||
{
|
||||
|
|
|
@ -32,6 +32,12 @@ namespace NzbDrone.Core.IndexerSearch
|
|||
|
||||
foreach (var season in series.Seasons)
|
||||
{
|
||||
if (!season.Monitored)
|
||||
{
|
||||
_logger.Debug("Season {0} of {1} is not monitored, skipping seaarch", season.SeasonNumber, series.Title);
|
||||
continue;
|
||||
}
|
||||
|
||||
var decisions = _nzbSearchService.SeasonSearch(message.SeriesId, season.SeasonNumber);
|
||||
downloadedCount += _downloadApprovedReports.DownloadApproved(decisions).Count;
|
||||
}
|
||||
|
|
|
@ -42,7 +42,7 @@ namespace NzbDrone.Core.Notifications
|
|||
|
||||
var episodeTitles = String.Join(" + ", episodes.Select(e => e.Title));
|
||||
|
||||
return String.Format("{0} - {1}{2} - {3} {4}",
|
||||
return String.Format("{0} - {1}{2} - {3} [{4}]",
|
||||
series.Title,
|
||||
episodes.First().SeasonNumber,
|
||||
episodeNumbers,
|
||||
|
@ -71,7 +71,7 @@ namespace NzbDrone.Core.Notifications
|
|||
public void Handle(EpisodeDownloadedEvent message)
|
||||
{
|
||||
var downloadMessage = new DownloadMessage();
|
||||
downloadMessage.Message = GetMessage(message.Episode.Series, message.Episode.Episodes, message.Episode.ParsedEpisodeInfo.Quality);
|
||||
downloadMessage.Message = GetMessage(message.Episode.Series, message.Episode.Episodes, message.Episode.Quality);
|
||||
downloadMessage.Series = message.Episode.Series;
|
||||
downloadMessage.EpisodeFile = message.EpisodeFile;
|
||||
downloadMessage.OldFiles = message.OldFiles;
|
||||
|
|
|
@ -88,12 +88,26 @@ namespace NzbDrone.Update
|
|||
return startupContext;
|
||||
}
|
||||
|
||||
if (args.Count() >= 3)
|
||||
else if (args.Count() == 3)
|
||||
{
|
||||
startupContext.UpdateLocation = args[1];
|
||||
startupContext.ExecutingApplication = args[2];
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
logger.Debug("Arguments:");
|
||||
|
||||
foreach (var arg in args)
|
||||
{
|
||||
logger.Debug(" {0}", arg);
|
||||
}
|
||||
|
||||
var message = String.Format("Number of arguments are unexpected, expected: 3, found: {0}", args.Count());
|
||||
|
||||
throw new ArgumentOutOfRangeException("args", message);
|
||||
}
|
||||
|
||||
return startupContext;
|
||||
}
|
||||
|
||||
|
|
|
@ -119,7 +119,7 @@
|
|||
}
|
||||
|
||||
@media (min-width: @screen-md-min) {
|
||||
width : 140px;
|
||||
width : 135px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -5,11 +5,6 @@
|
|||
@import "../Content/mixins";
|
||||
@import "../Content/variables";
|
||||
|
||||
.table {
|
||||
|
||||
//table-layout: fixed;
|
||||
}
|
||||
|
||||
.series-title {
|
||||
.text-overflow();
|
||||
|
||||
|
@ -24,9 +19,10 @@
|
|||
color: #428bca;
|
||||
text-decoration: none;
|
||||
|
||||
&.focus, &.hover {
|
||||
&:focus, &:hover {
|
||||
color: #2a6496;
|
||||
text-decoration: underline;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
@media @lg {
|
||||
|
|
|
@ -87,3 +87,19 @@ h3 {
|
|||
margin-left: 0px;
|
||||
}
|
||||
}
|
||||
|
||||
// Tooltips
|
||||
|
||||
.help-inline-checkbox, .help-inline {
|
||||
.tooltip-inner {
|
||||
white-space : pre-wrap;
|
||||
min-width : 200px;
|
||||
}
|
||||
|
||||
.help-link ~ .tooltip {
|
||||
.tooltip-inner {
|
||||
white-space : normal;
|
||||
min-width : 0px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -47,7 +47,7 @@ define(
|
|||
|
||||
Handlebars.registerHelper('EpisodeProgressClass', function () {
|
||||
if (this.episodeFileCount === this.episodeCount) {
|
||||
if (this.continuing) {
|
||||
if (this.status === 'continuing') {
|
||||
return '';
|
||||
}
|
||||
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
<div class="rename-preview-item">
|
||||
<div class="row">
|
||||
<div class="rename-checkbox span">
|
||||
<div class="rename-checkbox col-md-1">
|
||||
<label class="checkbox-button" title="Rename File">
|
||||
<input type="checkbox" name="rename"/>
|
||||
<div class="btn btn-icon-only">
|
||||
<div class="btn">
|
||||
<i></i>
|
||||
</div>
|
||||
</label>
|
||||
|
|
|
@ -23,15 +23,14 @@
|
|||
}
|
||||
|
||||
.rename-checkbox {
|
||||
width: 20px;
|
||||
width: 40px;
|
||||
padding-top: 5px;
|
||||
margin-right: 10px;
|
||||
|
||||
.checkbox-button {
|
||||
.btn {
|
||||
text-align: left;
|
||||
min-width: 10px;
|
||||
width: 10px;
|
||||
width: 38px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -47,8 +46,7 @@
|
|||
.checkbox-button {
|
||||
.btn {
|
||||
text-align: left;
|
||||
min-width: 10px;
|
||||
width: 10px;
|
||||
width: 38px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -9,17 +9,7 @@ define(
|
|||
console.log('starting signalR');
|
||||
|
||||
$('body').tooltip({
|
||||
selector: '[title]',
|
||||
container: 'body'
|
||||
});
|
||||
|
||||
$(document).click(function(e) {
|
||||
|
||||
if ($(e.target).attr('title') !== undefined) {
|
||||
return;
|
||||
}
|
||||
|
||||
$('.tooltip').remove();
|
||||
selector: '[title]'
|
||||
});
|
||||
|
||||
return this;
|
||||
|
|