mirror of
https://github.com/Ombi-app/Ombi.git
synced 2025-07-10 23:42:36 -07:00
Should fix #696 Fixed an issue with the scheduled jobs where it could use a different trigger if the order between the schedules and the triggers were in different positions in the array... Stupid me, ordering both arrays by the name now.
Fixed #729 #730 Should fix #717 also
This commit is contained in:
parent
4e60b4afda
commit
1d8437739e
6 changed files with 25 additions and 23 deletions
|
@ -230,7 +230,7 @@ namespace PlexRequests.Services.Jobs
|
||||||
|
|
||||||
public IEnumerable<PlexContent> GetPlexTvShows(IEnumerable<PlexContent> content)
|
public IEnumerable<PlexContent> GetPlexTvShows(IEnumerable<PlexContent> content)
|
||||||
{
|
{
|
||||||
return content.Where(x => x.Type == Store.Models.Plex.PlexMediaType.Show.to);
|
return content.Where(x => x.Type == Store.Models.Plex.PlexMediaType.Show);
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool IsTvShowAvailable(PlexContent[] plexShows, string title, string year, string providerId = null, int[] seasons = null)
|
public bool IsTvShowAvailable(PlexContent[] plexShows, string title, string year, string providerId = null, int[] seasons = null)
|
||||||
|
|
|
@ -132,10 +132,11 @@ namespace PlexRequests.Services.Jobs
|
||||||
|
|
||||||
private void GenerateMovieHtml(RecentlyAddedModel movies, PlexSettings plexSettings, StringBuilder sb)
|
private void GenerateMovieHtml(RecentlyAddedModel movies, PlexSettings plexSettings, StringBuilder sb)
|
||||||
{
|
{
|
||||||
|
var orderedMovies = movies?._children?.OrderByDescending(x => x?.addedAt.UnixTimeStampToDateTime()).ToList() ?? new List<RecentlyAddedChild>();
|
||||||
sb.Append("<h1>New Movies:</h1><br/><br/>");
|
sb.Append("<h1>New Movies:</h1><br/><br/>");
|
||||||
sb.Append(
|
sb.Append(
|
||||||
"<table border=\"0\" cellpadding=\"0\" align=\"center\" cellspacing=\"0\" style=\"border-collapse: separate; mso-table-lspace: 0pt; mso-table-rspace: 0pt; width: 100%;\" width=\"100%\">");
|
"<table border=\"0\" cellpadding=\"0\" align=\"center\" cellspacing=\"0\" style=\"border-collapse: separate; mso-table-lspace: 0pt; mso-table-rspace: 0pt; width: 100%;\" width=\"100%\">");
|
||||||
foreach (var movie in movies._children.OrderByDescending(x => x.addedAt.UnixTimeStampToDateTime()))
|
foreach (var movie in orderedMovies)
|
||||||
{
|
{
|
||||||
var plexGUID = string.Empty;
|
var plexGUID = string.Empty;
|
||||||
try
|
try
|
||||||
|
@ -259,9 +260,6 @@ namespace PlexRequests.Services.Jobs
|
||||||
|
|
||||||
if (!testEmail)
|
if (!testEmail)
|
||||||
{
|
{
|
||||||
//if (newletterSettings.SendToPlexUsers)
|
|
||||||
//{
|
|
||||||
|
|
||||||
var users = UserHelper.GetUsersWithFeature(Features.RequestAddedNotification);
|
var users = UserHelper.GetUsersWithFeature(Features.RequestAddedNotification);
|
||||||
if (users != null)
|
if (users != null)
|
||||||
{
|
{
|
||||||
|
@ -273,7 +271,6 @@ namespace PlexRequests.Services.Jobs
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//}
|
|
||||||
|
|
||||||
if (newletterSettings.CustomUsersEmailAddresses != null
|
if (newletterSettings.CustomUsersEmailAddresses != null
|
||||||
&& newletterSettings.CustomUsersEmailAddresses.Any())
|
&& newletterSettings.CustomUsersEmailAddresses.Any())
|
||||||
|
|
|
@ -62,7 +62,7 @@ namespace PlexRequests.UI.Jobs
|
||||||
var jobList = new List<IJobDetail>
|
var jobList = new List<IJobDetail>
|
||||||
{
|
{
|
||||||
JobBuilder.Create<PlexAvailabilityChecker>().WithIdentity("PlexAvailabilityChecker", "Plex").Build(),
|
JobBuilder.Create<PlexAvailabilityChecker>().WithIdentity("PlexAvailabilityChecker", "Plex").Build(),
|
||||||
JobBuilder.Create<PlexContentCacher>().WithIdentity("PlexContentCacher", "Plex").Build(),
|
JobBuilder.Create<PlexContentCacher>().WithIdentity("PlexContentCacher", "PlexCacher").Build(),
|
||||||
JobBuilder.Create<PlexEpisodeCacher>().WithIdentity("PlexEpisodeCacher", "Plex").Build(),
|
JobBuilder.Create<PlexEpisodeCacher>().WithIdentity("PlexEpisodeCacher", "Plex").Build(),
|
||||||
JobBuilder.Create<PlexUserChecker>().WithIdentity("PlexUserChecker", "Plex").Build(),
|
JobBuilder.Create<PlexUserChecker>().WithIdentity("PlexUserChecker", "Plex").Build(),
|
||||||
JobBuilder.Create<SickRageCacher>().WithIdentity("SickRageCacher", "Cache").Build(),
|
JobBuilder.Create<SickRageCacher>().WithIdentity("SickRageCacher", "Cache").Build(),
|
||||||
|
@ -93,8 +93,8 @@ namespace PlexRequests.UI.Jobs
|
||||||
var jobs = CreateJobs();
|
var jobs = CreateJobs();
|
||||||
var triggers = CreateTriggers();
|
var triggers = CreateTriggers();
|
||||||
|
|
||||||
var jobDetails = jobs as IJobDetail[] ?? jobs.ToArray();
|
var jobDetails = jobs as IJobDetail[] ?? jobs.OrderByDescending(x => x.Key.Name).ToArray();
|
||||||
var triggerDetails = triggers as ITrigger[] ?? triggers.ToArray();
|
var triggerDetails = triggers as ITrigger[] ?? triggers.OrderByDescending(x => x.Key.Name).ToArray();
|
||||||
|
|
||||||
if (jobDetails.Length != triggerDetails.Length)
|
if (jobDetails.Length != triggerDetails.Length)
|
||||||
{
|
{
|
||||||
|
@ -175,7 +175,7 @@ namespace PlexRequests.UI.Jobs
|
||||||
.Build();
|
.Build();
|
||||||
var plexCacher =
|
var plexCacher =
|
||||||
TriggerBuilder.Create()
|
TriggerBuilder.Create()
|
||||||
.WithIdentity("PlexContentCacher", "Plex")
|
.WithIdentity("PlexContentCacher", "PlexCacher")
|
||||||
.StartNow()
|
.StartNow()
|
||||||
.WithSimpleSchedule(x => x.WithIntervalInMinutes(s.PlexContentCacher).RepeatForever())
|
.WithSimpleSchedule(x => x.WithIntervalInMinutes(s.PlexContentCacher).RepeatForever())
|
||||||
.Build();
|
.Build();
|
||||||
|
@ -183,49 +183,49 @@ namespace PlexRequests.UI.Jobs
|
||||||
var plexUserChecker =
|
var plexUserChecker =
|
||||||
TriggerBuilder.Create()
|
TriggerBuilder.Create()
|
||||||
.WithIdentity("PlexUserChecker", "Plex")
|
.WithIdentity("PlexUserChecker", "Plex")
|
||||||
.StartNow()
|
.StartAt(DateBuilder.FutureDate(30, IntervalUnit.Minute))
|
||||||
.WithSimpleSchedule(x => x.WithIntervalInMinutes(s.PlexUserChecker).RepeatForever())
|
.WithSimpleSchedule(x => x.WithIntervalInMinutes(s.PlexUserChecker).RepeatForever())
|
||||||
.Build();
|
.Build();
|
||||||
|
|
||||||
var srCacher =
|
var srCacher =
|
||||||
TriggerBuilder.Create()
|
TriggerBuilder.Create()
|
||||||
.WithIdentity("SickRageCacher", "Cache")
|
.WithIdentity("SickRageCacher", "Cache")
|
||||||
.StartNow()
|
.StartAt(DateBuilder.FutureDate(2, IntervalUnit.Minute))
|
||||||
.WithSimpleSchedule(x => x.WithIntervalInMinutes(s.SickRageCacher).RepeatForever())
|
.WithSimpleSchedule(x => x.WithIntervalInMinutes(s.SickRageCacher).RepeatForever())
|
||||||
.Build();
|
.Build();
|
||||||
|
|
||||||
var sonarrCacher =
|
var sonarrCacher =
|
||||||
TriggerBuilder.Create()
|
TriggerBuilder.Create()
|
||||||
.WithIdentity("SonarrCacher", "Cache")
|
.WithIdentity("SonarrCacher", "Cache")
|
||||||
.StartNow()
|
.StartAt(DateBuilder.FutureDate(3, IntervalUnit.Minute))
|
||||||
.WithSimpleSchedule(x => x.WithIntervalInMinutes(s.SonarrCacher).RepeatForever())
|
.WithSimpleSchedule(x => x.WithIntervalInMinutes(s.SonarrCacher).RepeatForever())
|
||||||
.Build();
|
.Build();
|
||||||
|
|
||||||
var cpCacher =
|
var cpCacher =
|
||||||
TriggerBuilder.Create()
|
TriggerBuilder.Create()
|
||||||
.WithIdentity("CouchPotatoCacher", "Cache")
|
.WithIdentity("CouchPotatoCacher", "Cache")
|
||||||
.StartNow()
|
.StartAt(DateBuilder.FutureDate(4, IntervalUnit.Minute))
|
||||||
.WithSimpleSchedule(x => x.WithIntervalInMinutes(s.CouchPotatoCacher).RepeatForever())
|
.WithSimpleSchedule(x => x.WithIntervalInMinutes(s.CouchPotatoCacher).RepeatForever())
|
||||||
.Build();
|
.Build();
|
||||||
|
|
||||||
var storeBackup =
|
var storeBackup =
|
||||||
TriggerBuilder.Create()
|
TriggerBuilder.Create()
|
||||||
.WithIdentity("StoreBackup", "Database")
|
.WithIdentity("StoreBackup", "Database")
|
||||||
.StartNow()
|
.StartAt(DateBuilder.FutureDate(20, IntervalUnit.Minute))
|
||||||
.WithSimpleSchedule(x => x.WithIntervalInHours(s.StoreBackup).RepeatForever())
|
.WithSimpleSchedule(x => x.WithIntervalInHours(s.StoreBackup).RepeatForever())
|
||||||
.Build();
|
.Build();
|
||||||
|
|
||||||
var storeCleanup =
|
var storeCleanup =
|
||||||
TriggerBuilder.Create()
|
TriggerBuilder.Create()
|
||||||
.WithIdentity("StoreCleanup", "Database")
|
.WithIdentity("StoreCleanup", "Database")
|
||||||
.StartNow()
|
.StartAt(DateBuilder.FutureDate(35, IntervalUnit.Minute))
|
||||||
.WithSimpleSchedule(x => x.WithIntervalInHours(s.StoreCleanup).RepeatForever())
|
.WithSimpleSchedule(x => x.WithIntervalInHours(s.StoreCleanup).RepeatForever())
|
||||||
.Build();
|
.Build();
|
||||||
|
|
||||||
var userRequestLimiter =
|
var userRequestLimiter =
|
||||||
TriggerBuilder.Create()
|
TriggerBuilder.Create()
|
||||||
.WithIdentity("UserRequestLimiter", "Request")
|
.WithIdentity("UserRequestLimiter", "Request")
|
||||||
.StartAt(DateBuilder.FutureDate(5, IntervalUnit.Minute))
|
.StartAt(DateBuilder.FutureDate(25, IntervalUnit.Minute))
|
||||||
// Everything has started on application start, lets wait 5 minutes
|
// Everything has started on application start, lets wait 5 minutes
|
||||||
.WithSimpleSchedule(x => x.WithIntervalInHours(s.UserRequestLimitResetter).RepeatForever())
|
.WithSimpleSchedule(x => x.WithIntervalInHours(s.UserRequestLimitResetter).RepeatForever())
|
||||||
.Build();
|
.Build();
|
||||||
|
@ -233,7 +233,7 @@ namespace PlexRequests.UI.Jobs
|
||||||
var plexEpCacher =
|
var plexEpCacher =
|
||||||
TriggerBuilder.Create()
|
TriggerBuilder.Create()
|
||||||
.WithIdentity("PlexEpisodeCacher", "Cache")
|
.WithIdentity("PlexEpisodeCacher", "Cache")
|
||||||
.StartAt(DateBuilder.FutureDate(5, IntervalUnit.Minute))
|
.StartAt(DateBuilder.FutureDate(10, IntervalUnit.Minute))
|
||||||
.WithSimpleSchedule(x => x.WithIntervalInHours(s.PlexEpisodeCacher).RepeatForever())
|
.WithSimpleSchedule(x => x.WithIntervalInHours(s.PlexEpisodeCacher).RepeatForever())
|
||||||
.Build();
|
.Build();
|
||||||
|
|
||||||
|
@ -243,14 +243,13 @@ namespace PlexRequests.UI.Jobs
|
||||||
.WithIdentity("RecentlyAddedModel", "Email")
|
.WithIdentity("RecentlyAddedModel", "Email")
|
||||||
.StartNow()
|
.StartNow()
|
||||||
.WithCronSchedule(s.RecentlyAddedCron)
|
.WithCronSchedule(s.RecentlyAddedCron)
|
||||||
.WithSimpleSchedule(x => x.WithIntervalInHours(2).RepeatForever())
|
|
||||||
.Build();
|
.Build();
|
||||||
|
|
||||||
var fault =
|
var fault =
|
||||||
TriggerBuilder.Create()
|
TriggerBuilder.Create()
|
||||||
.WithIdentity("FaultQueueHandler", "Fault")
|
.WithIdentity("FaultQueueHandler", "Fault")
|
||||||
//.StartAt(DateBuilder.FutureDate(10, IntervalUnit.Minute))
|
//.StartAt(DateBuilder.FutureDate(10, IntervalUnit.Minute))
|
||||||
.StartNow()
|
.StartAt(DateBuilder.FutureDate(13, IntervalUnit.Minute))
|
||||||
.WithSimpleSchedule(x => x.WithIntervalInHours(s.FaultQueueHandler).RepeatForever())
|
.WithSimpleSchedule(x => x.WithIntervalInHours(s.FaultQueueHandler).RepeatForever())
|
||||||
.Build();
|
.Build();
|
||||||
|
|
||||||
|
|
|
@ -977,7 +977,12 @@ namespace PlexRequests.UI.Modules
|
||||||
StoreBackup = s.StoreBackup,
|
StoreBackup = s.StoreBackup,
|
||||||
StoreCleanup = s.StoreCleanup,
|
StoreCleanup = s.StoreCleanup,
|
||||||
JobRecorder = dict,
|
JobRecorder = dict,
|
||||||
RecentlyAddedCron = s.RecentlyAddedCron
|
RecentlyAddedCron = s.RecentlyAddedCron,
|
||||||
|
PlexContentCacher = s.PlexContentCacher,
|
||||||
|
FaultQueueHandler = s.FaultQueueHandler,
|
||||||
|
PlexEpisodeCacher = s.PlexEpisodeCacher,
|
||||||
|
PlexUserChecker = s.PlexUserChecker,
|
||||||
|
UserRequestLimitResetter = s.UserRequestLimitResetter
|
||||||
};
|
};
|
||||||
return View["SchedulerSettings", model];
|
return View["SchedulerSettings", model];
|
||||||
}
|
}
|
||||||
|
|
|
@ -104,7 +104,8 @@ namespace PlexRequests.UI.Modules
|
||||||
|| x.Name.Equals(JobNames.EpisodeCacher)
|
|| x.Name.Equals(JobNames.EpisodeCacher)
|
||||||
|| x.Name.Equals(JobNames.PlexChecker)
|
|| x.Name.Equals(JobNames.PlexChecker)
|
||||||
|| x.Name.Equals(JobNames.SonarrCacher)
|
|| x.Name.Equals(JobNames.SonarrCacher)
|
||||||
|| x.Name.Equals(JobNames.SrCacher));
|
|| x.Name.Equals(JobNames.SrCacher)
|
||||||
|
|| x.Name.Equals(JobNames.PlexCacher));
|
||||||
|
|
||||||
|
|
||||||
return Response.AsJson(cacherJobs.Any()
|
return Response.AsJson(cacherJobs.Any()
|
||||||
|
|
|
@ -11,7 +11,7 @@
|
||||||
formAction = "/" + baseUrl.ToHtmlString();
|
formAction = "/" + baseUrl.ToHtmlString();
|
||||||
}
|
}
|
||||||
|
|
||||||
var isAdmin = Html.HasAnyPermission(true, Permissions.Administrator) || Html.HasAnyPermission(Permissions.ManageRequests);
|
var isAdmin = Html.HasAnyPermission(true, Permissions.Administrator, Permissions.ManageRequests);
|
||||||
|
|
||||||
}
|
}
|
||||||
<h1>Details</h1>
|
<h1>Details</h1>
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue