This commit is contained in:
+4
-4
@@ -93,11 +93,11 @@ async def get_movies_list(dependencies: dict,
|
|||||||
params.append(source_filter)
|
params.append(source_filter)
|
||||||
|
|
||||||
if search:
|
if search:
|
||||||
where_conditions.append("(imdb_id LIKE %s OR path LIKE %s)")
|
where_conditions.append("(imdb_id ILIKE %s OR path ILIKE %s)")
|
||||||
params.extend([f"%{search}%", f"%{search}%"])
|
params.extend([f"%{search}%", f"%{search}%"])
|
||||||
|
|
||||||
if imdb_search:
|
if imdb_search:
|
||||||
where_conditions.append("imdb_id LIKE %s")
|
where_conditions.append("imdb_id ILIKE %s")
|
||||||
params.append(f"%{imdb_search}%")
|
params.append(f"%{imdb_search}%")
|
||||||
|
|
||||||
where_clause = " AND ".join(where_conditions) if where_conditions else "1=1"
|
where_clause = " AND ".join(where_conditions) if where_conditions else "1=1"
|
||||||
@@ -162,11 +162,11 @@ async def get_tv_series_list(dependencies: dict,
|
|||||||
having_conditions = []
|
having_conditions = []
|
||||||
|
|
||||||
if search:
|
if search:
|
||||||
where_conditions.append("(s.imdb_id LIKE %s OR s.path LIKE %s)")
|
where_conditions.append("(s.imdb_id ILIKE %s OR s.path ILIKE %s)")
|
||||||
params.extend([f"%{search}%", f"%{search}%"])
|
params.extend([f"%{search}%", f"%{search}%"])
|
||||||
|
|
||||||
if imdb_search:
|
if imdb_search:
|
||||||
where_conditions.append("s.imdb_id LIKE %s")
|
where_conditions.append("s.imdb_id ILIKE %s")
|
||||||
params.append(f"%{imdb_search}%")
|
params.append(f"%{imdb_search}%")
|
||||||
|
|
||||||
if source_filter:
|
if source_filter:
|
||||||
|
|||||||
@@ -96,11 +96,11 @@ async def get_movies_list(dependencies: dict,
|
|||||||
params.append(source_filter)
|
params.append(source_filter)
|
||||||
|
|
||||||
if search:
|
if search:
|
||||||
where_conditions.append("(imdb_id LIKE %s OR path LIKE %s)")
|
where_conditions.append("(imdb_id ILIKE %s OR path ILIKE %s)")
|
||||||
params.extend([f"%{search}%", f"%{search}%"])
|
params.extend([f"%{search}%", f"%{search}%"])
|
||||||
|
|
||||||
if imdb_search:
|
if imdb_search:
|
||||||
where_conditions.append("imdb_id LIKE %s")
|
where_conditions.append("imdb_id ILIKE %s")
|
||||||
params.append(f"%{imdb_search}%")
|
params.append(f"%{imdb_search}%")
|
||||||
|
|
||||||
where_clause = " AND ".join(where_conditions) if where_conditions else "1=1"
|
where_clause = " AND ".join(where_conditions) if where_conditions else "1=1"
|
||||||
@@ -165,11 +165,11 @@ async def get_tv_series_list(dependencies: dict,
|
|||||||
having_conditions = []
|
having_conditions = []
|
||||||
|
|
||||||
if search:
|
if search:
|
||||||
where_conditions.append("(s.imdb_id LIKE %s OR s.path LIKE %s)")
|
where_conditions.append("(s.imdb_id ILIKE %s OR s.path ILIKE %s)")
|
||||||
params.extend([f"%{search}%", f"%{search}%"])
|
params.extend([f"%{search}%", f"%{search}%"])
|
||||||
|
|
||||||
if imdb_search:
|
if imdb_search:
|
||||||
where_conditions.append("s.imdb_id LIKE %s")
|
where_conditions.append("s.imdb_id ILIKE %s")
|
||||||
params.append(f"%{imdb_search}%")
|
params.append(f"%{imdb_search}%")
|
||||||
|
|
||||||
if source_filter:
|
if source_filter:
|
||||||
|
|||||||
+31
-4
@@ -667,6 +667,13 @@ async function smartFixMovie(imdbId) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async function smartFixEpisode(imdbId, season, episode) {
|
async function smartFixEpisode(imdbId, season, episode) {
|
||||||
|
// Validate parameters
|
||||||
|
if (!imdbId || season === undefined || season === null || episode === undefined || episode === null) {
|
||||||
|
console.error('smartFixEpisode: Invalid parameters:', {imdbId, season, episode});
|
||||||
|
showToast('Invalid episode parameters', 'error');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const options = await apiCall(`/api/episodes/${imdbId}/${season}/${episode}/date-options`);
|
const options = await apiCall(`/api/episodes/${imdbId}/${season}/${episode}/date-options`);
|
||||||
showSmartFixModal('episode', options);
|
showSmartFixModal('episode', options);
|
||||||
@@ -694,7 +701,10 @@ function showSmartFixModal(mediaType, options) {
|
|||||||
if (mediaType === 'movie') {
|
if (mediaType === 'movie') {
|
||||||
title.textContent = `Fix Date for Movie: ${options.imdb_id}`;
|
title.textContent = `Fix Date for Movie: ${options.imdb_id}`;
|
||||||
} else {
|
} else {
|
||||||
title.textContent = `Fix Date for Episode: ${options.imdb_id} S${options.season.toString().padStart(2, '0')}E${options.episode.toString().padStart(2, '0')}`;
|
// Add validation for episode data
|
||||||
|
const season = options.season || 0;
|
||||||
|
const episode = options.episode || 0;
|
||||||
|
title.textContent = `Fix Date for Episode: ${options.imdb_id} S${season.toString().padStart(2, '0')}E${episode.toString().padStart(2, '0')}`;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Build options HTML
|
// Build options HTML
|
||||||
@@ -910,7 +920,10 @@ function showEnhancedEditModal(mediaType, options, currentDateadded, currentSour
|
|||||||
if (mediaType === 'movie') {
|
if (mediaType === 'movie') {
|
||||||
title.textContent = `Edit Movie: ${options.imdb_id}`;
|
title.textContent = `Edit Movie: ${options.imdb_id}`;
|
||||||
} else {
|
} else {
|
||||||
title.textContent = `Edit Episode: ${options.imdb_id} S${options.season.toString().padStart(2, '0')}E${options.episode.toString().padStart(2, '0')}`;
|
// Add validation for episode data
|
||||||
|
const season = options.season || 0;
|
||||||
|
const episode = options.episode || 0;
|
||||||
|
title.textContent = `Edit Episode: ${options.imdb_id} S${season.toString().padStart(2, '0')}E${episode.toString().padStart(2, '0')}`;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Build enhanced edit form with date options
|
// Build enhanced edit form with date options
|
||||||
@@ -1094,6 +1107,13 @@ async function handleEnhancedEditSubmit(event) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async function editEpisode(imdbId, season, episode, dateadded, source) {
|
async function editEpisode(imdbId, season, episode, dateadded, source) {
|
||||||
|
// Validate parameters
|
||||||
|
if (!imdbId || season === undefined || season === null || episode === undefined || episode === null) {
|
||||||
|
console.error('editEpisode: Invalid parameters:', {imdbId, season, episode});
|
||||||
|
showToast('Invalid episode parameters', 'error');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
// Load episode options to populate available dates
|
// Load episode options to populate available dates
|
||||||
const options = await apiCall(`/api/episodes/${imdbId}/${season}/${episode}/date-options`);
|
const options = await apiCall(`/api/episodes/${imdbId}/${season}/${episode}/date-options`);
|
||||||
@@ -1276,6 +1296,13 @@ Analysis:
|
|||||||
|
|
||||||
// Episode deletion functionality
|
// Episode deletion functionality
|
||||||
async function deleteEpisode(imdbId, season, episode) {
|
async function deleteEpisode(imdbId, season, episode) {
|
||||||
|
// Validate parameters
|
||||||
|
if (!imdbId || season === undefined || season === null || episode === undefined || episode === null) {
|
||||||
|
console.error('deleteEpisode: Invalid parameters:', {imdbId, season, episode});
|
||||||
|
showToast('Invalid episode parameters', 'error');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
const episodeStr = `S${season.toString().padStart(2, '0')}E${episode.toString().padStart(2, '0')}`;
|
const episodeStr = `S${season.toString().padStart(2, '0')}E${episode.toString().padStart(2, '0')}`;
|
||||||
|
|
||||||
// Confirmation dialog
|
// Confirmation dialog
|
||||||
@@ -1284,7 +1311,7 @@ async function deleteEpisode(imdbId, season, episode) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const response = await fetch(`/database/episode/${imdbId}/${season}/${episode}`, {
|
const response = await fetch(`/api/episodes/${imdbId}/${season}/${episode}`, {
|
||||||
method: 'DELETE',
|
method: 'DELETE',
|
||||||
headers: {
|
headers: {
|
||||||
'Content-Type': 'application/json'
|
'Content-Type': 'application/json'
|
||||||
@@ -1327,7 +1354,7 @@ async function deleteMovie(imdbId) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const response = await fetch(`/database/movie/${imdbId}`, {
|
const response = await fetch(`/api/movies/${imdbId}`, {
|
||||||
method: 'DELETE',
|
method: 'DELETE',
|
||||||
headers: {
|
headers: {
|
||||||
'Content-Type': 'application/json'
|
'Content-Type': 'application/json'
|
||||||
|
|||||||
Reference in New Issue
Block a user