fix: web interface 422 errors
Local Docker Build (Dev) / build-dev (push) Successful in 4s
Local Docker Build (Main) / build (push) Successful in 30s
Local Docker Build (Main) / deploy (push) Successful in 1s

This commit is contained in:
2025-10-20 08:51:14 -04:00
parent 741a283df0
commit f6a161a014
3 changed files with 26 additions and 19 deletions
+1 -1
View File
@@ -1 +1 @@
2.6.4 2.6.5
+3 -12
View File
@@ -149,18 +149,9 @@ async def get_tv_series_list(dependencies: dict,
"""Get paginated list of TV series with episode counts""" """Get paginated list of TV series with episode counts"""
db = dependencies["db"] db = dependencies["db"]
# Debug logging for 422 troubleshooting # Validate date_filter values
try: if date_filter and date_filter not in ['complete', 'incomplete', 'none']:
print(f"DEBUG: Series list params - skip:{skip}, limit:{limit}, search:'{search}', imdb_search:'{imdb_search}', date_filter:'{date_filter}', source_filter:'{source_filter}'") raise HTTPException(status_code=422, detail=f"Invalid date_filter: must be 'complete', 'incomplete', or 'none', got '{date_filter}'")
# Validate date_filter values
if date_filter and date_filter not in ['complete', 'incomplete', 'none']:
print(f"ERROR: Invalid date_filter value: '{date_filter}'")
raise HTTPException(status_code=422, detail=f"Invalid date_filter: must be 'complete', 'incomplete', or 'none', got '{date_filter}'")
except Exception as e:
print(f"ERROR: Parameter validation failed: {e}")
raise
with db.get_connection() as conn: with db.get_connection() as conn:
cursor = conn.cursor() cursor = conn.cursor()
+22 -6
View File
@@ -186,13 +186,21 @@ function getChartColor(index) {
// Movies // Movies
async function loadMovies(page = 1) { async function loadMovies(page = 1) {
// Ensure page is a valid number
if (isNaN(page) || page < 1) {
page = 1;
}
const search = document.getElementById('movies-search').value; const search = document.getElementById('movies-search').value;
const imdbSearch = document.getElementById('movies-imdb-search').value; const imdbSearch = document.getElementById('movies-imdb-search').value;
const hasDate = document.getElementById('movies-filter-date').value; const hasDate = document.getElementById('movies-filter-date').value;
const sourceFilter = document.getElementById('movies-filter-source').value; const sourceFilter = document.getElementById('movies-filter-source').value;
const skip = (page - 1) * 100;
console.log(`DEBUG: loadMovies called with page=${page}, calculated skip=${skip}`);
const params = new URLSearchParams({ const params = new URLSearchParams({
skip: (page - 1) * 100, skip: skip,
limit: 100 limit: 100
}); });
@@ -206,7 +214,7 @@ async function loadMovies(page = 1) {
updateMoviesTable(data); updateMoviesTable(data);
updateMoviesPagination(data); updateMoviesPagination(data);
updateMoviesSourceFilter(data); updateMoviesSourceFilter(data);
currentMoviesPage = page; currentMoviesPage = (isNaN(page) || page < 1) ? 1 : page;
} catch (error) { } catch (error) {
console.error('Failed to load movies:', error); console.error('Failed to load movies:', error);
} }
@@ -347,18 +355,26 @@ async function loadSeriesSources() {
} }
function refreshMovies() { function refreshMovies() {
loadMovies(currentMoviesPage); loadMovies(isNaN(currentMoviesPage) ? 1 : currentMoviesPage);
} }
// TV Series // TV Series
async function loadSeries(page = 1) { async function loadSeries(page = 1) {
// Ensure page is a valid number
if (isNaN(page) || page < 1) {
page = 1;
}
const search = document.getElementById('series-search').value; const search = document.getElementById('series-search').value;
const imdbSearch = document.getElementById('series-imdb-search').value; const imdbSearch = document.getElementById('series-imdb-search').value;
const dateFilter = document.getElementById('series-filter-date').value; const dateFilter = document.getElementById('series-filter-date').value;
const sourceFilter = document.getElementById('series-filter-source').value; const sourceFilter = document.getElementById('series-filter-source').value;
const skip = (page - 1) * 50;
console.log(`DEBUG: loadSeries called with page=${page}, calculated skip=${skip}`);
const params = new URLSearchParams({ const params = new URLSearchParams({
skip: (page - 1) * 50, skip: skip,
limit: 50 limit: 50
}); });
@@ -371,7 +387,7 @@ async function loadSeries(page = 1) {
const data = await apiCall(`/api/series?${params}`); const data = await apiCall(`/api/series?${params}`);
updateSeriesTable(data); updateSeriesTable(data);
updateSeriesPagination(data); updateSeriesPagination(data);
currentSeriesPage = page; currentSeriesPage = (isNaN(page) || page < 1) ? 1 : page;
} catch (error) { } catch (error) {
console.error('Failed to load series:', error); console.error('Failed to load series:', error);
} }
@@ -437,7 +453,7 @@ function updateSeriesPagination(data) {
} }
function refreshSeries() { function refreshSeries() {
loadSeries(currentSeriesPage); loadSeries(isNaN(currentSeriesPage) ? 1 : currentSeriesPage);
} }
async function viewSeriesEpisodes(imdbId) { async function viewSeriesEpisodes(imdbId) {