fix(network): Added filtering for full seasons specifically in the UI when performing a manual full season search and added a message to the CLI that noes to only try to download a full season if that release includes 'fullSeason: true'
This commit is contained in:
@@ -11,7 +11,7 @@ use crate::{models::HorizontallyScrollableText, serde_enum_from};
|
||||
|
||||
use super::servarr_models::{
|
||||
DiskSpace, HostConfig, Indexer, Language, LogResponse, QualityProfile, QualityWrapper,
|
||||
QueueEvent, Release, RootFolder, SecurityConfig, Tag, Update,
|
||||
QueueEvent, RootFolder, SecurityConfig, Tag, Update,
|
||||
};
|
||||
use super::{EnumDisplayStyle, Serdeable};
|
||||
|
||||
@@ -412,6 +412,28 @@ pub struct RatingsList {
|
||||
pub rotten_tomatoes: Option<Rating>,
|
||||
}
|
||||
|
||||
#[derive(Serialize, Deserialize, Default, Clone, Debug, PartialEq, Eq)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
#[serde(default)]
|
||||
pub struct RadarrRelease {
|
||||
pub guid: String,
|
||||
pub protocol: String,
|
||||
#[serde(deserialize_with = "super::from_i64")]
|
||||
pub age: i64,
|
||||
pub title: HorizontallyScrollableText,
|
||||
pub indexer: String,
|
||||
#[serde(deserialize_with = "super::from_i64")]
|
||||
pub indexer_id: i64,
|
||||
#[serde(deserialize_with = "super::from_i64")]
|
||||
pub size: i64,
|
||||
pub rejected: bool,
|
||||
pub rejections: Option<Vec<String>>,
|
||||
pub seeders: Option<Number>,
|
||||
pub leechers: Option<Number>,
|
||||
pub languages: Option<Vec<Language>>,
|
||||
pub quality: QualityWrapper,
|
||||
}
|
||||
|
||||
#[derive(Default, Serialize, Debug, PartialEq, Eq, Clone)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub struct RadarrReleaseDownloadBody {
|
||||
@@ -485,7 +507,7 @@ pub enum RadarrSerdeable {
|
||||
Movies(Vec<Movie>),
|
||||
QualityProfiles(Vec<QualityProfile>),
|
||||
QueueEvents(Vec<QueueEvent>),
|
||||
Releases(Vec<Release>),
|
||||
Releases(Vec<RadarrRelease>),
|
||||
RootFolders(Vec<RootFolder>),
|
||||
SecurityConfig(SecurityConfig),
|
||||
SystemStatus(SystemStatus),
|
||||
@@ -526,7 +548,7 @@ serde_enum_from!(
|
||||
Movies(Vec<Movie>),
|
||||
QualityProfiles(Vec<QualityProfile>),
|
||||
QueueEvents(Vec<QueueEvent>),
|
||||
Releases(Vec<Release>),
|
||||
Releases(Vec<RadarrRelease>),
|
||||
RootFolders(Vec<RootFolder>),
|
||||
SecurityConfig(SecurityConfig),
|
||||
SystemStatus(SystemStatus),
|
||||
|
||||
@@ -7,8 +7,8 @@ mod tests {
|
||||
radarr_models::{
|
||||
AddMovieSearchResult, BlocklistItem, BlocklistResponse, Collection, Credit, DiskSpace,
|
||||
DownloadRecord, DownloadsResponse, Indexer, IndexerSettings, IndexerTestResult,
|
||||
MinimumAvailability, Monitor, Movie, MovieHistoryItem, QualityProfile, RadarrSerdeable,
|
||||
RadarrTask, RadarrTaskName, Release, SystemStatus, Tag, Update,
|
||||
MinimumAvailability, Monitor, Movie, MovieHistoryItem, QualityProfile, RadarrRelease,
|
||||
RadarrSerdeable, RadarrTask, RadarrTaskName, SystemStatus, Tag, Update,
|
||||
},
|
||||
servarr_models::{HostConfig, Log, LogResponse, QueueEvent, RootFolder, SecurityConfig},
|
||||
EnumDisplayStyle, Serdeable,
|
||||
@@ -317,9 +317,9 @@ mod tests {
|
||||
|
||||
#[test]
|
||||
fn test_radarr_serdeable_from_releases() {
|
||||
let releases = vec![Release {
|
||||
let releases = vec![RadarrRelease {
|
||||
size: 1,
|
||||
..Release::default()
|
||||
..RadarrRelease::default()
|
||||
}];
|
||||
|
||||
let radarr_serdeable: RadarrSerdeable = releases.clone().into();
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
use strum::IntoEnumIterator;
|
||||
|
||||
use crate::models::radarr_models::{
|
||||
Collection, Credit, MinimumAvailability, Monitor, Movie, MovieHistoryItem,
|
||||
Collection, Credit, MinimumAvailability, Monitor, Movie, MovieHistoryItem, RadarrRelease,
|
||||
};
|
||||
use crate::models::servarr_data::radarr::radarr_data::RadarrData;
|
||||
use crate::models::servarr_models::{Indexer, Release, RootFolder};
|
||||
use crate::models::servarr_models::{Indexer, RootFolder};
|
||||
use crate::models::stateful_list::StatefulList;
|
||||
use crate::models::stateful_table::StatefulTable;
|
||||
use crate::models::{HorizontallyScrollableText, ScrollableText};
|
||||
@@ -22,7 +22,7 @@ pub struct MovieDetailsModal {
|
||||
pub movie_history: StatefulTable<MovieHistoryItem>,
|
||||
pub movie_cast: StatefulTable<Credit>,
|
||||
pub movie_crew: StatefulTable<Credit>,
|
||||
pub movie_releases: StatefulTable<Release>,
|
||||
pub movie_releases: StatefulTable<RadarrRelease>,
|
||||
}
|
||||
|
||||
#[derive(Default, Debug, PartialEq, Eq)]
|
||||
|
||||
@@ -1,11 +1,10 @@
|
||||
#[cfg(test)]
|
||||
pub mod utils {
|
||||
use crate::models::radarr_models::{
|
||||
AddMovieSearchResult, CollectionMovie, Credit, MovieHistoryItem,
|
||||
AddMovieSearchResult, CollectionMovie, Credit, MovieHistoryItem, RadarrRelease,
|
||||
};
|
||||
use crate::models::servarr_data::radarr::modals::MovieDetailsModal;
|
||||
use crate::models::servarr_data::radarr::radarr_data::RadarrData;
|
||||
use crate::models::servarr_models::Release;
|
||||
use crate::models::stateful_table::StatefulTable;
|
||||
use crate::models::{HorizontallyScrollableText, ScrollableText};
|
||||
|
||||
@@ -25,7 +24,7 @@ pub mod utils {
|
||||
.set_items(vec![Credit::default()]);
|
||||
movie_details_modal
|
||||
.movie_releases
|
||||
.set_items(vec![Release::default()]);
|
||||
.set_items(vec![RadarrRelease::default()]);
|
||||
|
||||
let mut radarr_data = RadarrData {
|
||||
delete_movie_files: true,
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
use crate::models::{
|
||||
servarr_models::Release,
|
||||
sonarr_models::{Episode, SonarrHistoryItem},
|
||||
sonarr_models::{Episode, SonarrHistoryItem, SonarrRelease},
|
||||
stateful_table::StatefulTable,
|
||||
ScrollableText,
|
||||
};
|
||||
@@ -12,12 +11,12 @@ pub struct EpisodeDetailsModal {
|
||||
pub audio_details: String,
|
||||
pub video_details: String,
|
||||
pub episode_history: StatefulTable<SonarrHistoryItem>,
|
||||
pub episode_releases: StatefulTable<Release>,
|
||||
pub episode_releases: StatefulTable<SonarrRelease>,
|
||||
}
|
||||
|
||||
#[derive(Default)]
|
||||
pub struct SeasonDetailsModal {
|
||||
pub episodes: StatefulTable<Episode>,
|
||||
pub episode_details_modal: Option<EpisodeDetailsModal>,
|
||||
pub season_releases: StatefulTable<Release>,
|
||||
pub season_releases: StatefulTable<SonarrRelease>,
|
||||
}
|
||||
|
||||
@@ -195,28 +195,6 @@ pub struct QueueEvent {
|
||||
pub duration: Option<String>,
|
||||
}
|
||||
|
||||
#[derive(Serialize, Deserialize, Default, Clone, Debug, PartialEq, Eq)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
#[serde(default)]
|
||||
pub struct Release {
|
||||
pub guid: String,
|
||||
pub protocol: String,
|
||||
#[serde(deserialize_with = "super::from_i64")]
|
||||
pub age: i64,
|
||||
pub title: HorizontallyScrollableText,
|
||||
pub indexer: String,
|
||||
#[serde(deserialize_with = "super::from_i64")]
|
||||
pub indexer_id: i64,
|
||||
#[serde(deserialize_with = "super::from_i64")]
|
||||
pub size: i64,
|
||||
pub rejected: bool,
|
||||
pub rejections: Option<Vec<String>>,
|
||||
pub seeders: Option<Number>,
|
||||
pub leechers: Option<Number>,
|
||||
pub languages: Option<Vec<Language>>,
|
||||
pub quality: QualityWrapper,
|
||||
}
|
||||
|
||||
#[derive(Default, Serialize, Deserialize, Debug, Clone, Eq, PartialEq)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub struct RootFolder {
|
||||
|
||||
@@ -13,7 +13,7 @@ use super::{
|
||||
radarr_models::IndexerTestResult,
|
||||
servarr_models::{
|
||||
DiskSpace, HostConfig, Indexer, Language, LogResponse, QualityProfile, QualityWrapper,
|
||||
QueueEvent, Release, RootFolder, SecurityConfig, Tag, Update,
|
||||
QueueEvent, RootFolder, SecurityConfig, Tag, Update,
|
||||
},
|
||||
EnumDisplayStyle, HorizontallyScrollableText, Serdeable,
|
||||
};
|
||||
@@ -401,6 +401,28 @@ pub struct SonarrCommandBody {
|
||||
pub episode_ids: Option<Vec<i64>>,
|
||||
}
|
||||
|
||||
#[derive(Serialize, Deserialize, Default, Clone, Debug, PartialEq, Eq)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
#[serde(default)]
|
||||
pub struct SonarrRelease {
|
||||
pub guid: String,
|
||||
pub protocol: String,
|
||||
#[serde(deserialize_with = "super::from_i64")]
|
||||
pub age: i64,
|
||||
pub title: HorizontallyScrollableText,
|
||||
pub indexer: String,
|
||||
#[serde(deserialize_with = "super::from_i64")]
|
||||
pub indexer_id: i64,
|
||||
#[serde(deserialize_with = "super::from_i64")]
|
||||
pub size: i64,
|
||||
pub rejected: bool,
|
||||
pub rejections: Option<Vec<String>>,
|
||||
pub seeders: Option<Number>,
|
||||
pub leechers: Option<Number>,
|
||||
pub languages: Option<Vec<Language>>,
|
||||
pub quality: QualityWrapper,
|
||||
pub full_season: bool,
|
||||
}
|
||||
#[derive(Default, Serialize, Debug, PartialEq, Eq, Clone)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub struct SonarrReleaseDownloadBody {
|
||||
@@ -467,7 +489,7 @@ pub enum SonarrSerdeable {
|
||||
LogResponse(LogResponse),
|
||||
QualityProfiles(Vec<QualityProfile>),
|
||||
QueueEvents(Vec<QueueEvent>),
|
||||
Releases(Vec<Release>),
|
||||
Releases(Vec<SonarrRelease>),
|
||||
RootFolders(Vec<RootFolder>),
|
||||
SecurityConfig(SecurityConfig),
|
||||
SeriesVec(Vec<Series>),
|
||||
@@ -508,7 +530,7 @@ serde_enum_from!(
|
||||
LogResponse(LogResponse),
|
||||
QualityProfiles(Vec<QualityProfile>),
|
||||
QueueEvents(Vec<QueueEvent>),
|
||||
Releases(Vec<Release>),
|
||||
Releases(Vec<SonarrRelease>),
|
||||
RootFolders(Vec<RootFolder>),
|
||||
SecurityConfig(SecurityConfig),
|
||||
SeriesVec(Vec<Series>),
|
||||
|
||||
@@ -6,13 +6,13 @@ mod tests {
|
||||
use crate::models::{
|
||||
radarr_models::IndexerTestResult,
|
||||
servarr_models::{
|
||||
DiskSpace, HostConfig, Indexer, Log, LogResponse, QualityProfile, QueueEvent, Release,
|
||||
RootFolder, SecurityConfig, Tag, Update,
|
||||
DiskSpace, HostConfig, Indexer, Log, LogResponse, QualityProfile, QueueEvent, RootFolder,
|
||||
SecurityConfig, Tag, Update,
|
||||
},
|
||||
sonarr_models::{
|
||||
BlocklistItem, BlocklistResponse, DownloadRecord, DownloadsResponse, Episode,
|
||||
IndexerSettings, Series, SeriesStatus, SeriesType, SonarrHistoryEventType, SonarrHistoryItem,
|
||||
SonarrSerdeable, SonarrTask, SonarrTaskName, SystemStatus,
|
||||
SonarrRelease, SonarrSerdeable, SonarrTask, SonarrTaskName, SystemStatus,
|
||||
},
|
||||
EnumDisplayStyle, Serdeable,
|
||||
};
|
||||
@@ -355,9 +355,9 @@ mod tests {
|
||||
|
||||
#[test]
|
||||
fn test_sonarr_serdeable_from_releases() {
|
||||
let releases = vec![Release {
|
||||
let releases = vec![SonarrRelease {
|
||||
size: 1,
|
||||
..Release::default()
|
||||
..SonarrRelease::default()
|
||||
}];
|
||||
|
||||
let sonarr_serdeable: SonarrSerdeable = releases.clone().into();
|
||||
|
||||
Reference in New Issue
Block a user