diff --git a/api/models.py b/api/models.py index 01f9352..73a27da 100644 --- a/api/models.py +++ b/api/models.py @@ -56,16 +56,12 @@ class TVEpisodeRequest(BaseModel): # Web interface models class MovieUpdateRequest(BaseModel): """Request to update movie dateadded""" - imdb_id: str dateadded: Optional[str] source: str class EpisodeUpdateRequest(BaseModel): """Request to update episode dateadded""" - imdb_id: str - season: int - episode: int dateadded: Optional[str] source: str diff --git a/api/web_routes.py b/api/web_routes.py index fc8fc45..3ce12b4 100644 --- a/api/web_routes.py +++ b/api/web_routes.py @@ -331,6 +331,24 @@ async def update_movie_date(dependencies: dict, imdb_id: str, dateadded: Optiona print(f" - dateadded type: {type(dateadded)}") print(f" - dateadded repr: {repr(dateadded)}") + # Validate inputs + if not imdb_id or not imdb_id.strip(): + print(f"❌ Invalid imdb_id: {repr(imdb_id)}") + raise HTTPException(status_code=422, detail="Invalid IMDb ID") + + if not source or not source.strip(): + print(f"❌ Invalid source: {repr(source)}") + raise HTTPException(status_code=422, detail="Invalid source") + + # Validate date format if provided + if dateadded: + try: + from datetime import datetime + datetime.fromisoformat(dateadded.replace('Z', '+00:00')) + except Exception as e: + print(f"❌ Invalid dateadded format: {repr(dateadded)} - {e}") + raise HTTPException(status_code=422, detail=f"Invalid date format: {dateadded}") + # Validate movie exists movie = db.get_movie_dates(imdb_id) if not movie: @@ -346,13 +364,18 @@ async def update_movie_date(dependencies: dict, imdb_id: str, dateadded: Optiona ) # Add to processing history - db.add_processing_history( - imdb_id=imdb_id, - media_type="movie", - event_type="manual_date_update", - details={"old_source": movie.get('source'), "new_source": source, "dateadded": dateadded} - ) + try: + db.add_processing_history( + imdb_id=imdb_id, + media_type="movie", + event_type="manual_date_update", + details={"old_source": movie.get('source'), "new_source": source, "dateadded": dateadded} + ) + except Exception as e: + print(f"⚠️ Failed to add processing history: {e}") + # Don't fail the entire update for history logging issues + print(f"✅ Successfully updated movie {imdb_id}") return {"status": "success", "message": f"Updated movie {imdb_id}"} diff --git a/static/js/app.js b/static/js/app.js index 7c48311..7668da0 100644 --- a/static/js/app.js +++ b/static/js/app.js @@ -1003,7 +1003,6 @@ async function updateMovieDate(imdbId, dateadded, source) { const result = await apiCall(`/api/movies/${imdbId}`, { method: 'PUT', body: JSON.stringify({ - imdb_id: imdbId, dateadded: dateadded, source: source }) @@ -1026,9 +1025,6 @@ async function updateEpisodeDate(imdbId, season, episode, dateadded, source) { const result = await apiCall(`/api/episodes/${imdbId}/${season}/${episode}`, { method: 'PUT', body: JSON.stringify({ - imdb_id: imdbId, - season: season, - episode: episode, dateadded: dateadded, source: source })