from fastapi import APIRouter, Depends, Form, HTTPException, Request from fastapi.templating import Jinja2Templates from fastapi.responses import RedirectResponse from typing import Annotated from pydantic import BaseModel from ..api.v1.schema.user import AddUserInputBody, EditUserInputBody from .viewmodel import User import cli_api router = APIRouter() # TODO: Make this singleton or something templates = Jinja2Templates(directory='templates') @router.get('/') async def users(request: Request): try: dict_users = cli_api.list_users() if not dict_users: raise HTTPException(status_code=404, detail='No users found.') users: list[User] = [User.from_dict(key, value) for key, value in dict_users.items()] return templates.TemplateResponse('users.html', {'users': users, 'request': request}) except Exception as e: raise HTTPException(status_code=400, detail=f'Error: {str(e)}')