diff --git a/src/server/web/controllers/api/v1/anime.py b/src/server/web/controllers/api/v1/anime.py index 1fab388..4eaf833 100644 --- a/src/server/web/controllers/api/v1/anime.py +++ b/src/server/web/controllers/api/v1/anime.py @@ -5,9 +5,10 @@ This module provides REST API endpoints for anime CRUD operations, including creation, reading, updating, deletion, and search functionality. """ -from fastapi import APIRouter, HTTPException, Depends, Query, status -from typing import Dict, List, Any, Optional import uuid +from typing import Any, Dict, List, Optional + +from fastapi import APIRouter, Depends, HTTPException, Query, status from pydantic import BaseModel, Field # Import SeriesApp for business logic @@ -16,6 +17,7 @@ from src.core.SeriesApp import SeriesApp # FastAPI dependencies and models from src.server.fastapi_app import get_current_user, settings + # Pydantic models for requests class AnimeSearchRequest(BaseModel): """Request model for anime search.""" diff --git a/src/server/web/controllers/api/v1/config.py b/src/server/web/controllers/api/v1/config.py index 77a5806..4c5a0c9 100644 --- a/src/server/web/controllers/api/v1/config.py +++ b/src/server/web/controllers/api/v1/config.py @@ -3,13 +3,14 @@ API endpoints for configuration management. Provides comprehensive configuration management with validation, backup, and restore functionality. """ -from fastapi import APIRouter, HTTPException, Depends, UploadFile, File, Form, status -from fastapi.responses import FileResponse -from typing import Dict, Any, Optional +import json import logging import os -import json from datetime import datetime +from typing import Any, Dict, Optional + +from fastapi import APIRouter, Depends, File, Form, HTTPException, UploadFile, status +from fastapi.responses import FileResponse from pydantic import BaseModel # Import SeriesApp for business logic diff --git a/web_todo.md b/web_todo.md index 90fc0c6..b1936b6 100644 --- a/web_todo.md +++ b/web_todo.md @@ -5,181 +5,206 @@ This document contains tasks for migrating the web application from Flask to Fas ## ๐Ÿ“‹ Project Analysis and Setup ### Initial Assessment -- [x] Review current Flask application structure in `/src/web/` directory -- [x] Identify all Flask routes and their HTTP methods -- [x] Document current template engine usage (Jinja2) -- [x] List all static file serving requirements -- [x] Inventory all middleware and extensions currently used -- [x] Document current error handling patterns -- [x] Review authentication/authorization mechanisms + +- [x] Review current Flask application structure in `/src/web/` directory +- [x] Identify all Flask routes and their HTTP methods +- [x] Document current template engine usage (Jinja2) +- [x] List all static file serving requirements +- [x] Inventory all middleware and extensions currently used +- [x] Document current error handling patterns +- [x] Review authentication/authorization mechanisms ### FastAPI Setup -- [x] Install FastAPI dependencies: `pip install fastapi uvicorn jinja2 python-multipart` -- [x] Update `requirements.txt` or `pyproject.toml` with new dependencies -- [x] Remove Flask dependencies: `flask`, `flask-*` packages -- [x] Create new FastAPI application entry point + +- [x] Install FastAPI dependencies: `pip install fastapi uvicorn jinja2 python-multipart` +- [x] Update `requirements.txt` or `pyproject.toml` with new dependencies +- [x] Remove Flask dependencies: `flask`, `flask-*` packages +- [x] Create new FastAPI application entry point ## ๐Ÿ”ง Core Application Migration ### Main Application Structure -- [x] Create new `main.py` or update existing app entry point with FastAPI app instance -- [x] Migrate Flask app configuration to FastAPI settings using Pydantic BaseSettings -- [x] Convert Flask blueprints to FastAPI routers -- [x] Update CORS configuration from Flask-CORS to FastAPI CORS middleware + +- [x] Create new `main.py` or update existing app entry point with FastAPI app instance +- [x] Migrate Flask app configuration to FastAPI settings using Pydantic BaseSettings +- [x] Convert Flask blueprints to FastAPI routers +- [x] Update CORS configuration from Flask-CORS to FastAPI CORS middleware ### Route Conversion -- [x] Convert all `@app.route()` decorators to FastAPI route decorators (`@app.get()`, `@app.post()`, etc.) -- [x] Update route parameter syntax from `` to `{id: int}` format -- [x] Convert Flask request object usage (`request.form`, `request.json`) to FastAPI request models -- [x] Update response handling from Flask `jsonify()` to FastAPI automatic JSON serialization -- [x] Convert Flask `redirect()` and `url_for()` to FastAPI equivalents + +- [x] Convert all `@app.route()` decorators to FastAPI route decorators (`@app.get()`, `@app.post()`, etc.) +- [x] Update route parameter syntax from `` to `{id: int}` format +- [x] Convert Flask request object usage (`request.form`, `request.json`) to FastAPI request models +- [x] Update response handling from Flask `jsonify()` to FastAPI automatic JSON serialization +- [x] Convert Flask `redirect()` and `url_for()` to FastAPI equivalents ### Request/Response Models -- [x] Create Pydantic models for request bodies (replace Flask request parsing) -- [x] Create Pydantic models for response schemas -- [x] Update form handling to use FastAPI Form dependencies -- [x] Convert file upload handling to FastAPI UploadFile + +- [x] Create Pydantic models for request bodies (replace Flask request parsing) +- [x] Create Pydantic models for response schemas +- [x] Update form handling to use FastAPI Form dependencies +- [x] Convert file upload handling to FastAPI UploadFile ## ๐ŸŽจ Template and Static Files Migration ### Template Engine Setup -- [x] Configure Jinja2Templates in FastAPI application -- [x] Set up template directory structure -- [x] Create templates directory configuration in FastAPI app + +- [x] Configure Jinja2Templates in FastAPI application +- [x] Set up template directory structure +- [x] Create templates directory configuration in FastAPI app ### HTML Template Migration -- [x] Review all `.html` files in templates directory -- [x] Update template rendering from Flask `render_template()` to FastAPI `templates.TemplateResponse()` -- [x] Verify Jinja2 syntax compatibility (should be mostly unchanged) -- [x] Update template context passing to match FastAPI pattern -- [x] Test all template variables and filters still work correctly + +- [x] Review all `.html` files in templates directory +- [x] Update template rendering from Flask `render_template()` to FastAPI `templates.TemplateResponse()` +- [x] Verify Jinja2 syntax compatibility (should be mostly unchanged) +- [x] Update template context passing to match FastAPI pattern +- [x] Test all template variables and filters still work correctly ### Static Files Configuration -- [x] Configure StaticFiles mount in FastAPI for CSS, JS, images -- [x] Update static file URL generation in templates -- [x] Verify all CSS file references work correctly -- [x] Verify all JavaScript file references work correctly -- [x] Test image and other asset serving + +- [x] Configure StaticFiles mount in FastAPI for CSS, JS, images +- [x] Update static file URL generation in templates +- [x] Verify all CSS file references work correctly +- [x] Verify all JavaScript file references work correctly +- [x] Test image and other asset serving ## ๐Ÿ’ป JavaScript and Frontend Migration ### Inline JavaScript Review -- [x] Scan all HTML templates for inline `