RootFolder removed from Series, going back to Path
This commit is contained in:
parent
75def198e4
commit
95a9a297bc
|
@ -29,7 +29,6 @@ namespace NzbDrone.Api.Series
|
||||||
|
|
||||||
Get["/{slug}"] = o => GetSeries((string)o.slug.ToString());
|
Get["/{slug}"] = o => GetSeries((string)o.slug.ToString());
|
||||||
|
|
||||||
SharedValidator.RuleFor(s => s.RootFolderId).ValidId();
|
|
||||||
SharedValidator.RuleFor(s => s.QualityProfileId).ValidId();
|
SharedValidator.RuleFor(s => s.QualityProfileId).ValidId();
|
||||||
|
|
||||||
PostValidator.RuleFor(s => s.Title).NotEmpty();
|
PostValidator.RuleFor(s => s.Title).NotEmpty();
|
||||||
|
|
|
@ -26,11 +26,8 @@ namespace NzbDrone.Api.Series
|
||||||
public Int32 UtcOffset { get; set; }
|
public Int32 UtcOffset { get; set; }
|
||||||
public List<Core.MediaCover.MediaCover> Images { get; set; }
|
public List<Core.MediaCover.MediaCover> Images { get; set; }
|
||||||
|
|
||||||
public String Path { get; set; }
|
|
||||||
|
|
||||||
//View & Edit
|
//View & Edit
|
||||||
public int RootFolderId { get; set; }
|
public String Path { get; set; }
|
||||||
public string FolderName { get; set; }
|
|
||||||
public Int32 QualityProfileId { get; set; }
|
public Int32 QualityProfileId { get; set; }
|
||||||
|
|
||||||
//Editing Only
|
//Editing Only
|
||||||
|
@ -50,8 +47,6 @@ namespace NzbDrone.Api.Series
|
||||||
public String CleanTitle { get; set; }
|
public String CleanTitle { get; set; }
|
||||||
public String ImdbId { get; set; }
|
public String ImdbId { get; set; }
|
||||||
public String TitleSlug { get; set; }
|
public String TitleSlug { get; set; }
|
||||||
|
public String RootFolderPath { get; set; }
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -144,25 +144,6 @@ namespace NzbDrone.Core.Test.Datastore
|
||||||
Db.All<ScheduledTask>().Single().TypeName.Should().Be("A");
|
Db.All<ScheduledTask>().Single().TypeName.Should().Be("A");
|
||||||
Db.All<ScheduledTask>().Single().Interval.Should().Be(12);
|
Db.All<ScheduledTask>().Single().Interval.Should().Be(12);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
|
||||||
public void should_load_lazy_objects()
|
|
||||||
{
|
|
||||||
|
|
||||||
var rootFolder = Db.Insert(new RootFolders.RootFolder() { Path = "C:\test" });
|
|
||||||
|
|
||||||
var series = Builder<Series>.CreateNew()
|
|
||||||
.With(c => c.RootFolderId = rootFolder.Id)
|
|
||||||
.BuildNew();
|
|
||||||
|
|
||||||
Db.Insert(series);
|
|
||||||
|
|
||||||
|
|
||||||
Db.Single<Series>().RootFolder.Should().NotBeNull();
|
|
||||||
Db.Single<Series>().RootFolder.Value.Should().NotBeNull();
|
|
||||||
Db.Single<Series>().RootFolder.Value.Path.Should().Be(rootFolder.Path);
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -33,8 +33,7 @@ namespace NzbDrone.Core.Test.MediaFileTests
|
||||||
{
|
{
|
||||||
var fakeSeries = Builder<Series>.CreateNew()
|
var fakeSeries = Builder<Series>.CreateNew()
|
||||||
.With(s => s.Title = "30 Rock")
|
.With(s => s.Title = "30 Rock")
|
||||||
.With(s => s.RootFolder = new LazyLoaded<RootFolder>(new RootFolder { Path = @"C:\Test" }))
|
.With(s => s.Path = @"C:\Test\30 Rock")
|
||||||
.With(s => s.FolderName = "30 Rock")
|
|
||||||
.With(s => s.SeasonFolder = useSeasonFolder)
|
.With(s => s.SeasonFolder = useSeasonFolder)
|
||||||
.Build();
|
.Build();
|
||||||
|
|
||||||
|
|
Binary file not shown.
|
@ -4,8 +4,8 @@ using NzbDrone.Core.Datastore.Migration.Framework;
|
||||||
namespace NzbDrone.Core.Datastore.Migration
|
namespace NzbDrone.Core.Datastore.Migration
|
||||||
{
|
{
|
||||||
[Tags("")]
|
[Tags("")]
|
||||||
[Migration(20130324)]
|
[Migration(1)]
|
||||||
public class Migration20130324 : NzbDroneMigrationBase
|
public class InitialSetup : NzbDroneMigrationBase
|
||||||
{
|
{
|
||||||
protected override void MainDbUpgrade()
|
protected override void MainDbUpgrade()
|
||||||
{
|
{
|
||||||
|
@ -27,8 +27,7 @@ namespace NzbDrone.Core.Datastore.Migration
|
||||||
.WithColumn("Overview").AsString().Nullable()
|
.WithColumn("Overview").AsString().Nullable()
|
||||||
.WithColumn("AirTime").AsString().Nullable()
|
.WithColumn("AirTime").AsString().Nullable()
|
||||||
.WithColumn("Images").AsString()
|
.WithColumn("Images").AsString()
|
||||||
.WithColumn("RootFolderId").AsInt32()
|
.WithColumn("Path").AsString()
|
||||||
.WithColumn("FolderName").AsString()
|
|
||||||
.WithColumn("Monitored").AsBoolean()
|
.WithColumn("Monitored").AsBoolean()
|
||||||
.WithColumn("QualityProfileId").AsInt32()
|
.WithColumn("QualityProfileId").AsInt32()
|
||||||
.WithColumn("SeasonFolder").AsBoolean()
|
.WithColumn("SeasonFolder").AsBoolean()
|
||||||
|
@ -83,7 +82,7 @@ namespace NzbDrone.Core.Datastore.Migration
|
||||||
.WithColumn("NzbInfoUrl").AsString().Nullable()
|
.WithColumn("NzbInfoUrl").AsString().Nullable()
|
||||||
.WithColumn("ReleaseGroup").AsString().Nullable();
|
.WithColumn("ReleaseGroup").AsString().Nullable();
|
||||||
|
|
||||||
Create.TableForModel("NotificationDefinitions")
|
Create.TableForModel("Notifications")
|
||||||
.WithColumn("Name").AsString()
|
.WithColumn("Name").AsString()
|
||||||
.WithColumn("OnGrab").AsBoolean()
|
.WithColumn("OnGrab").AsBoolean()
|
||||||
.WithColumn("OnDownload").AsBoolean()
|
.WithColumn("OnDownload").AsBoolean()
|
||||||
|
@ -95,7 +94,7 @@ namespace NzbDrone.Core.Datastore.Migration
|
||||||
.WithColumn("Interval").AsInt32()
|
.WithColumn("Interval").AsInt32()
|
||||||
.WithColumn("LastExecution").AsDateTime();
|
.WithColumn("LastExecution").AsDateTime();
|
||||||
|
|
||||||
Create.TableForModel("IndexerDefinitions")
|
Create.TableForModel("Indexers")
|
||||||
.WithColumn("Enable").AsBoolean()
|
.WithColumn("Enable").AsBoolean()
|
||||||
.WithColumn("Name").AsString().Unique()
|
.WithColumn("Name").AsString().Unique()
|
||||||
.WithColumn("Implementation").AsString()
|
.WithColumn("Implementation").AsString()
|
|
@ -1,29 +0,0 @@
|
||||||
using FluentMigrator;
|
|
||||||
using NzbDrone.Core.Datastore.Migration.Framework;
|
|
||||||
|
|
||||||
namespace NzbDrone.Core.Datastore.Migration
|
|
||||||
{
|
|
||||||
[Tags("")]
|
|
||||||
[Migration(20130522)]
|
|
||||||
public class Migration20130522 : NzbDroneMigrationBase
|
|
||||||
{
|
|
||||||
protected override void MainDbUpgrade()
|
|
||||||
{
|
|
||||||
Execute.Sql("DROP TABLE IF EXISTS NotificationDefinitions");
|
|
||||||
|
|
||||||
Rename.Table("IndexerDefinitions")
|
|
||||||
.To("Indexers");
|
|
||||||
|
|
||||||
Create.TableForModel("Notifications")
|
|
||||||
.WithColumn("Name").AsString()
|
|
||||||
.WithColumn("OnGrab").AsBoolean()
|
|
||||||
.WithColumn("OnDownload").AsBoolean()
|
|
||||||
.WithColumn("Settings").AsString()
|
|
||||||
.WithColumn("Implementation").AsString();
|
|
||||||
}
|
|
||||||
|
|
||||||
protected override void LogDbUpgrade()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -47,9 +47,8 @@ namespace NzbDrone.Core.Datastore
|
||||||
// .HasOne(h => h.Series, h => h.SeriesId);
|
// .HasOne(h => h.Series, h => h.SeriesId);
|
||||||
|
|
||||||
Mapper.Entity<Series>().RegisterModel("Series")
|
Mapper.Entity<Series>().RegisterModel("Series")
|
||||||
.Ignore(s => s.Path)
|
.Ignore(s => s.RootFolderPath)
|
||||||
.Relationship()
|
.Relationship()
|
||||||
.HasOne(s => s.RootFolder, s => s.RootFolderId)
|
|
||||||
.HasOne(s => s.QualityProfile, s => s.QualityProfileId);
|
.HasOne(s => s.QualityProfile, s => s.QualityProfileId);
|
||||||
|
|
||||||
Mapper.Entity<Season>().RegisterModel("Seasons");
|
Mapper.Entity<Season>().RegisterModel("Seasons");
|
||||||
|
|
|
@ -202,12 +202,11 @@
|
||||||
<Compile Include="Datastore\IWriteModels.cs" />
|
<Compile Include="Datastore\IWriteModels.cs" />
|
||||||
<Compile Include="Datastore\LazyList.cs" />
|
<Compile Include="Datastore\LazyList.cs" />
|
||||||
<Compile Include="Datastore\MappingExtensions.cs" />
|
<Compile Include="Datastore\MappingExtensions.cs" />
|
||||||
<Compile Include="Datastore\Migration\Migration20130522.cs" />
|
|
||||||
<Compile Include="Datastore\Migration\Framework\MigrationController.cs" />
|
<Compile Include="Datastore\Migration\Framework\MigrationController.cs" />
|
||||||
<Compile Include="Datastore\Migration\Framework\MigrationExtension.cs" />
|
<Compile Include="Datastore\Migration\Framework\MigrationExtension.cs" />
|
||||||
<Compile Include="Datastore\Migration\Framework\MigrationOptions.cs" />
|
<Compile Include="Datastore\Migration\Framework\MigrationOptions.cs" />
|
||||||
<Compile Include="Datastore\Migration\Framework\MigrationLogger.cs" />
|
<Compile Include="Datastore\Migration\Framework\MigrationLogger.cs" />
|
||||||
<Compile Include="Datastore\Migration\Migration20130324.cs" />
|
<Compile Include="Datastore\Migration\001_InitialSetup.cs" />
|
||||||
<Compile Include="Datastore\Migration\Framework\NzbDroneMigrationBase.cs" />
|
<Compile Include="Datastore\Migration\Framework\NzbDroneMigrationBase.cs" />
|
||||||
<Compile Include="Datastore\MigrationType.cs" />
|
<Compile Include="Datastore\MigrationType.cs" />
|
||||||
<Compile Include="Datastore\ModelBase.cs" />
|
<Compile Include="Datastore\ModelBase.cs" />
|
||||||
|
|
|
@ -36,24 +36,9 @@ namespace NzbDrone.Core.Tv
|
||||||
public DateTime? CustomStartDate { get; set; }
|
public DateTime? CustomStartDate { get; set; }
|
||||||
public bool UseSceneNumbering { get; set; }
|
public bool UseSceneNumbering { get; set; }
|
||||||
public string TitleSlug { get; set; }
|
public string TitleSlug { get; set; }
|
||||||
|
public string Path { get; set; }
|
||||||
|
|
||||||
public int RootFolderId { get; set; }
|
public string RootFolderPath { get; set; }
|
||||||
public string FolderName { get; set; }
|
|
||||||
public LazyLoaded<RootFolder> RootFolder { get; set; }
|
|
||||||
|
|
||||||
//Todo: Use this to auto link RootFolder and Folder (using the proper path separator)
|
|
||||||
public string Path
|
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
|
||||||
if (RootFolder == null || RootFolder.Value == null || String.IsNullOrWhiteSpace(RootFolder.Value.Path))
|
|
||||||
{
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
return System.IO.Path.Combine(RootFolder.Value.Path, FolderName);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public DateTime? FirstAired { get; set; }
|
public DateTime? FirstAired { get; set; }
|
||||||
public LazyLoaded<QualityProfile> QualityProfile { get; set; }
|
public LazyLoaded<QualityProfile> QualityProfile { get; set; }
|
||||||
|
|
|
@ -101,10 +101,11 @@ namespace NzbDrone.Core.Tv
|
||||||
{
|
{
|
||||||
Ensure.That(() => newSeries).IsNotNull();
|
Ensure.That(() => newSeries).IsNotNull();
|
||||||
|
|
||||||
if (String.IsNullOrWhiteSpace(newSeries.FolderName))
|
if (String.IsNullOrWhiteSpace(newSeries.Path))
|
||||||
{
|
{
|
||||||
newSeries.FolderName = FileNameBuilder.CleanFilename(newSeries.Title);
|
var folderName = FileNameBuilder.CleanFilename(newSeries.Title);
|
||||||
newSeries.RootFolder = _rootFolderService.Get(newSeries.RootFolderId);
|
newSeries.Path = Path.Combine(newSeries.RootFolderPath, folderName);
|
||||||
|
|
||||||
_diskProvider.CreateFolder(newSeries.Path);
|
_diskProvider.CreateFolder(newSeries.Path);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -38,16 +38,13 @@ namespace NzbDrone.Integration.Test
|
||||||
{
|
{
|
||||||
var series = Series.Lookup("archer").First();
|
var series = Series.Lookup("archer").First();
|
||||||
|
|
||||||
var rootFolder = RootFolders.Post(new RootFolderResource { Path = Directory.GetCurrentDirectory() });
|
|
||||||
|
|
||||||
series.RootFolderId = rootFolder.Id;
|
|
||||||
series.QualityProfileId = 1;
|
series.QualityProfileId = 1;
|
||||||
|
series.Path = @"C:\Test\Archer";
|
||||||
|
|
||||||
series = Series.Post(series);
|
series = Series.Post(series);
|
||||||
|
|
||||||
Series.All().Should().HaveCount(1);
|
Series.All().Should().HaveCount(1);
|
||||||
|
|
||||||
|
|
||||||
Series.Get(series.Id).Should().NotBeNull();
|
Series.Get(series.Id).Should().NotBeNull();
|
||||||
Series.Get(series.TitleSlug).Should().NotBeNull();
|
Series.Get(series.TitleSlug).Should().NotBeNull();
|
||||||
|
|
||||||
|
|
|
@ -29,12 +29,10 @@ define([
|
||||||
var self = this;
|
var self = this;
|
||||||
|
|
||||||
var quality = this.ui.qualityProfile.val();
|
var quality = this.ui.qualityProfile.val();
|
||||||
var rootFolderId = this.options.rootFolder.id;
|
var path = this.options.folder.path;
|
||||||
var folderName = this.options.folder.name;
|
|
||||||
|
|
||||||
this.model.set('qualityProfileId', quality);
|
this.model.set('qualityProfileId', quality);
|
||||||
this.model.set('rootFolderId', rootFolderId);
|
this.model.set('path', path);
|
||||||
this.model.set('folderName', folderName);
|
|
||||||
|
|
||||||
this.model.save(undefined, {
|
this.model.save(undefined, {
|
||||||
success: function () {
|
success: function () {
|
||||||
|
|
|
@ -24,10 +24,10 @@ define(['app', 'Series/SeriesCollection'], function (app) {
|
||||||
icon.removeClass('icon-plus').addClass('icon-spin icon-spinner disabled');
|
icon.removeClass('icon-plus').addClass('icon-spin icon-spinner disabled');
|
||||||
|
|
||||||
var quality = this.ui.qualityProfile.val();
|
var quality = this.ui.qualityProfile.val();
|
||||||
var rootFolderId = this.ui.rootFolder.val();
|
var rootFolderPath = this.ui.rootFolder.children(':selected').text();
|
||||||
|
|
||||||
this.model.set('qualityProfileId', quality);
|
this.model.set('qualityProfileId', quality);
|
||||||
this.model.set('rootFolderId', rootFolderId);
|
this.model.set('rootFolderPath', rootFolderPath);
|
||||||
|
|
||||||
var self = this;
|
var self = this;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue