From 2f4d4638efad59ba5d20f1cc481d0a0e5bd64e14 Mon Sep 17 00:00:00 2001 From: SBCrumb Date: Sat, 25 Oct 2025 14:52:14 -0400 Subject: [PATCH] web: not deleteing --- api/web_routes.py | 8 ++++---- nfoguard-web/api/web_routes.py | 8 ++++---- static/js/app.js | 35 ++++++++++++++++++++++++++++++---- 3 files changed, 39 insertions(+), 12 deletions(-) diff --git a/api/web_routes.py b/api/web_routes.py index 81d3732..ce7bf9b 100644 --- a/api/web_routes.py +++ b/api/web_routes.py @@ -93,11 +93,11 @@ async def get_movies_list(dependencies: dict, params.append(source_filter) 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}%"]) if imdb_search: - where_conditions.append("imdb_id LIKE %s") + where_conditions.append("imdb_id ILIKE %s") params.append(f"%{imdb_search}%") 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 = [] 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}%"]) if imdb_search: - where_conditions.append("s.imdb_id LIKE %s") + where_conditions.append("s.imdb_id ILIKE %s") params.append(f"%{imdb_search}%") if source_filter: diff --git a/nfoguard-web/api/web_routes.py b/nfoguard-web/api/web_routes.py index 3026213..8848839 100644 --- a/nfoguard-web/api/web_routes.py +++ b/nfoguard-web/api/web_routes.py @@ -96,11 +96,11 @@ async def get_movies_list(dependencies: dict, params.append(source_filter) 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}%"]) if imdb_search: - where_conditions.append("imdb_id LIKE %s") + where_conditions.append("imdb_id ILIKE %s") params.append(f"%{imdb_search}%") 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 = [] 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}%"]) if imdb_search: - where_conditions.append("s.imdb_id LIKE %s") + where_conditions.append("s.imdb_id ILIKE %s") params.append(f"%{imdb_search}%") if source_filter: diff --git a/static/js/app.js b/static/js/app.js index aa1b7e2..091183e 100644 --- a/static/js/app.js +++ b/static/js/app.js @@ -667,6 +667,13 @@ async function smartFixMovie(imdbId) { } 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 { const options = await apiCall(`/api/episodes/${imdbId}/${season}/${episode}/date-options`); showSmartFixModal('episode', options); @@ -694,7 +701,10 @@ function showSmartFixModal(mediaType, options) { if (mediaType === 'movie') { title.textContent = `Fix Date for Movie: ${options.imdb_id}`; } 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 @@ -910,7 +920,10 @@ function showEnhancedEditModal(mediaType, options, currentDateadded, currentSour if (mediaType === 'movie') { title.textContent = `Edit Movie: ${options.imdb_id}`; } 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 @@ -1094,6 +1107,13 @@ async function handleEnhancedEditSubmit(event) { } 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 { // Load episode options to populate available dates const options = await apiCall(`/api/episodes/${imdbId}/${season}/${episode}/date-options`); @@ -1276,6 +1296,13 @@ Analysis: // Episode deletion functionality 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')}`; // Confirmation dialog @@ -1284,7 +1311,7 @@ async function deleteEpisode(imdbId, season, episode) { } try { - const response = await fetch(`/database/episode/${imdbId}/${season}/${episode}`, { + const response = await fetch(`/api/episodes/${imdbId}/${season}/${episode}`, { method: 'DELETE', headers: { 'Content-Type': 'application/json' @@ -1327,7 +1354,7 @@ async function deleteMovie(imdbId) { } try { - const response = await fetch(`/database/movie/${imdbId}`, { + const response = await fetch(`/api/movies/${imdbId}`, { method: 'DELETE', headers: { 'Content-Type': 'application/json'