Merge pull request #1753 from MediaBrowser/dev

Dev
This commit is contained in:
Luke 2016-05-20 17:35:19 -04:00
commit 1fa11e100c
8 changed files with 53 additions and 75 deletions

View File

@ -415,21 +415,10 @@ namespace MediaBrowser.Api
private IEnumerable<Season> FilterVirtualSeasons(GetSeasons request, IEnumerable<Season> items) private IEnumerable<Season> FilterVirtualSeasons(GetSeasons request, IEnumerable<Season> items)
{ {
if (request.IsMissing.HasValue && request.IsVirtualUnaired.HasValue)
{
var isMissing = request.IsMissing.Value;
var isVirtualUnaired = request.IsVirtualUnaired.Value;
if (!isMissing && !isVirtualUnaired)
{
return items.Where(i => !i.IsMissingOrVirtualUnaired);
}
}
if (request.IsMissing.HasValue) if (request.IsMissing.HasValue)
{ {
var val = request.IsMissing.Value; var val = request.IsMissing.Value;
items = items.Where(i => (i.IsMissingSeason ?? false) == val); items = items.Where(i => (i.IsMissingSeason) == val);
} }
if (request.IsVirtualUnaired.HasValue) if (request.IsVirtualUnaired.HasValue)

View File

@ -1294,7 +1294,7 @@ namespace MediaBrowser.Controller.Entities
/// <summary> /// <summary>
/// Adds the children to list. /// Adds the children to list.
/// </summary> /// </summary>
private void AddChildrenToList(Dictionary<Guid,BaseItem> result, bool includeLinkedChildren, bool recursive, Func<BaseItem, bool> filter) private void AddChildrenToList(Dictionary<Guid, BaseItem> result, bool includeLinkedChildren, bool recursive, Func<BaseItem, bool> filter)
{ {
foreach (var child in Children) foreach (var child in Children)
{ {
@ -1525,14 +1525,12 @@ namespace MediaBrowser.Controller.Entities
User = user, User = user,
Recursive = true, Recursive = true,
IsFolder = false, IsFolder = false,
IsUnaired = false,
EnableTotalRecordCount = false EnableTotalRecordCount = false
}; };
if (!user.Configuration.DisplayMissingEpisodes) if (!user.Configuration.DisplayMissingEpisodes || !user.Configuration.DisplayUnairedEpisodes)
{ {
query.IsMissing = false; query.ExcludeLocationTypes = new[] { LocationType.Virtual };
} }
var itemsResult = await GetItems(query).ConfigureAwait(false); var itemsResult = await GetItems(query).ConfigureAwait(false);

View File

@ -134,7 +134,7 @@ namespace MediaBrowser.Controller.Entities.TV
if (!result) if (!result)
{ {
if (!IsMissingSeason.HasValue) if (!IsVirtualItem.HasValue)
{ {
return true; return true;
} }
@ -144,18 +144,18 @@ namespace MediaBrowser.Controller.Entities.TV
} }
[IgnoreDataMember] [IgnoreDataMember]
public bool? IsMissingSeason { get; set; } public bool? IsVirtualItem { get; set; }
[IgnoreDataMember]
public bool IsMissingSeason
{
get { return (IsVirtualItem ?? false) && !IsUnaired; }
}
[IgnoreDataMember] [IgnoreDataMember]
public bool IsVirtualUnaired public bool IsVirtualUnaired
{ {
get { return LocationType == LocationType.Virtual && IsUnaired; } get { return (IsVirtualItem ?? false) && IsUnaired; }
}
[IgnoreDataMember]
public bool IsMissingOrVirtualUnaired
{
get { return (IsMissingSeason ?? false) || (LocationType == LocationType.Virtual && IsUnaired); }
} }
[IgnoreDataMember] [IgnoreDataMember]
@ -319,10 +319,6 @@ namespace MediaBrowser.Controller.Entities.TV
{ {
var hasChanges = base.BeforeMetadataRefresh(); var hasChanges = base.BeforeMetadataRefresh();
var locationType = LocationType;
if (locationType == LocationType.FileSystem || locationType == LocationType.Offline)
{
if (!IndexNumber.HasValue && !string.IsNullOrEmpty(Path)) if (!IndexNumber.HasValue && !string.IsNullOrEmpty(Path))
{ {
IndexNumber = IndexNumber ?? LibraryManager.GetSeasonNumberFromPath(Path); IndexNumber = IndexNumber ?? LibraryManager.GetSeasonNumberFromPath(Path);
@ -333,7 +329,6 @@ namespace MediaBrowser.Controller.Entities.TV
hasChanges = true; hasChanges = true;
} }
} }
}
return hasChanges; return hasChanges;
} }

View File

@ -238,21 +238,14 @@ namespace MediaBrowser.Controller.Entities.TV
seasons = LibraryManager.Sort(base.GetChildren(user, true), user, new[] { ItemSortBy.SortName }, SortOrder.Ascending).OfType<Season>(); seasons = LibraryManager.Sort(base.GetChildren(user, true), user, new[] { ItemSortBy.SortName }, SortOrder.Ascending).OfType<Season>();
} }
if (!includeMissingSeasons && !includeVirtualUnaired)
{
seasons = seasons.Where(i => !i.IsMissingOrVirtualUnaired);
}
else
{
if (!includeMissingSeasons) if (!includeMissingSeasons)
{ {
seasons = seasons.Where(i => !(i.IsMissingSeason ?? false)); seasons = seasons.Where(i => !(i.IsMissingSeason));
} }
if (!includeVirtualUnaired) if (!includeVirtualUnaired)
{ {
seasons = seasons.Where(i => !i.IsVirtualUnaired); seasons = seasons.Where(i => !i.IsVirtualUnaired);
} }
}
return seasons; return seasons;
} }

View File

@ -1134,22 +1134,6 @@ namespace MediaBrowser.Controller.Entities
bool? isVirtualUnaired, bool? isVirtualUnaired,
bool? isUnaired) bool? isUnaired)
{ {
if (isMissing.HasValue && isVirtualUnaired.HasValue)
{
if (!isMissing.Value && !isVirtualUnaired.Value)
{
return items.Where(i =>
{
var e = i as Season;
if (e != null)
{
return !e.IsMissingOrVirtualUnaired;
}
return true;
});
}
}
if (isMissing.HasValue) if (isMissing.HasValue)
{ {
var val = isMissing.Value; var val = isMissing.Value;
@ -1158,7 +1142,7 @@ namespace MediaBrowser.Controller.Entities
var e = i as Season; var e = i as Season;
if (e != null) if (e != null)
{ {
return (e.IsMissingSeason ?? false) == val; return (e.IsMissingSeason) == val;
} }
return true; return true;
}); });

View File

@ -97,7 +97,7 @@ namespace MediaBrowser.Providers.TV
/// </summary> /// </summary>
public async Task<Season> AddSeason(Series series, public async Task<Season> AddSeason(Series series,
int? seasonNumber, int? seasonNumber,
bool isMissingSeason, bool isVirtualItem,
CancellationToken cancellationToken) CancellationToken cancellationToken)
{ {
var seasonName = seasonNumber == 0 ? var seasonName = seasonNumber == 0 ?
@ -111,7 +111,7 @@ namespace MediaBrowser.Providers.TV
Name = seasonName, Name = seasonName,
IndexNumber = seasonNumber, IndexNumber = seasonNumber,
Id = _libraryManager.GetNewItemId((series.Id + (seasonNumber ?? -1).ToString(_usCulture) + seasonName), typeof(Season)), Id = _libraryManager.GetNewItemId((series.Id + (seasonNumber ?? -1).ToString(_usCulture) + seasonName), typeof(Season)),
IsMissingSeason = isMissingSeason IsVirtualItem = isVirtualItem
}; };
season.SetParent(series); season.SetParent(series);

View File

@ -36,7 +36,7 @@ namespace MediaBrowser.Providers.TV
{ {
var episodes = item.GetEpisodes().ToList(); var episodes = item.GetEpisodes().ToList();
updateType |= SavePremiereDate(item, episodes); updateType |= SavePremiereDate(item, episodes);
updateType |= SaveIsMissing(item, episodes); updateType |= SaveIsVirtualItem(item, episodes);
} }
return updateType; return updateType;
@ -67,13 +67,13 @@ namespace MediaBrowser.Providers.TV
return ItemUpdateType.None; return ItemUpdateType.None;
} }
private ItemUpdateType SaveIsMissing(Season item, List<Episode> episodes) private ItemUpdateType SaveIsVirtualItem(Season item, List<Episode> episodes)
{ {
var isMissing = item.LocationType == LocationType.Virtual && (episodes.Count == 0 || episodes.All(i => i.IsMissingEpisode)); var isVirtualItem = item.LocationType == LocationType.Virtual && (episodes.Count == 0 || episodes.All(i => i.LocationType == LocationType.Virtual));
if (item.IsMissingSeason != isMissing) if (item.IsVirtualItem != isVirtualItem)
{ {
item.IsMissingSeason = isMissing; item.IsVirtualItem = isVirtualItem;
return ItemUpdateType.MetadataEdit; return ItemUpdateType.MetadataEdit;
} }

View File

@ -238,6 +238,7 @@ namespace MediaBrowser.Server.Implementations.Persistence
_connection.AddColumn(Logger, "TypedBaseItems", "PrimaryVersionId", "Text"); _connection.AddColumn(Logger, "TypedBaseItems", "PrimaryVersionId", "Text");
_connection.AddColumn(Logger, "TypedBaseItems", "DateLastMediaAdded", "DATETIME"); _connection.AddColumn(Logger, "TypedBaseItems", "DateLastMediaAdded", "DATETIME");
_connection.AddColumn(Logger, "TypedBaseItems", "Album", "Text"); _connection.AddColumn(Logger, "TypedBaseItems", "Album", "Text");
_connection.AddColumn(Logger, "TypedBaseItems", "IsVirtualItem", "BIT");
_connection.AddColumn(Logger, "UserDataKeys", "Priority", "INT"); _connection.AddColumn(Logger, "UserDataKeys", "Priority", "INT");
@ -359,7 +360,8 @@ namespace MediaBrowser.Server.Implementations.Persistence
"DateLastMediaAdded", "DateLastMediaAdded",
"Album", "Album",
"CriticRating", "CriticRating",
"CriticRatingSummary" "CriticRatingSummary",
"IsVirtualItem"
}; };
private readonly string[] _mediaStreamSaveColumns = private readonly string[] _mediaStreamSaveColumns =
@ -474,7 +476,8 @@ namespace MediaBrowser.Server.Implementations.Persistence
"OriginalTitle", "OriginalTitle",
"PrimaryVersionId", "PrimaryVersionId",
"DateLastMediaAdded", "DateLastMediaAdded",
"Album" "Album",
"IsVirtualItem"
}; };
_saveItemCommand = _connection.CreateCommand(); _saveItemCommand = _connection.CreateCommand();
_saveItemCommand.CommandText = "replace into TypedBaseItems (" + string.Join(",", saveColumns.ToArray()) + ") values ("; _saveItemCommand.CommandText = "replace into TypedBaseItems (" + string.Join(",", saveColumns.ToArray()) + ") values (";
@ -866,6 +869,16 @@ namespace MediaBrowser.Server.Implementations.Persistence
_saveItemCommand.GetParameter(index++).Value = item.Album; _saveItemCommand.GetParameter(index++).Value = item.Album;
var season = item as Season;
if (season != null && season.IsVirtualItem.HasValue)
{
_saveItemCommand.GetParameter(index++).Value = season.IsVirtualItem.Value;
}
else
{
_saveItemCommand.GetParameter(index++).Value = null;
}
_saveItemCommand.Transaction = transaction; _saveItemCommand.Transaction = transaction;
_saveItemCommand.ExecuteNonQuery(); _saveItemCommand.ExecuteNonQuery();
@ -1281,6 +1294,12 @@ namespace MediaBrowser.Server.Implementations.Persistence
item.CriticRatingSummary = reader.GetString(57); item.CriticRatingSummary = reader.GetString(57);
} }
var season = item as Season;
if (season != null && !reader.IsDBNull(58))
{
season.IsVirtualItem = reader.GetBoolean(58);
}
return item; return item;
} }