news-api / app.py
radames's picture
first
8f4b172
raw
history blame
No virus
1.26 kB
import os
import uvicorn
from fastapi.middleware.cors import CORSMiddleware
from fastapi.templating import Jinja2Templates
import logging
from fastapi.responses import HTMLResponse
from fastapi import FastAPI, Request, HTTPException
from pathlib import Path
from dateutil import parser
from db import Database
database = Database(Path("./"))
logging.basicConfig(level=os.environ.get("LOGLEVEL", "INFO"))
app = FastAPI()
app.add_middleware(
CORSMiddleware,
allow_origins=["*"],
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
def format_date(value):
format = "%A, %d %B %Y"
# Use dateutil's parser to automatically handle different date formats
try:
date = parser.parse(value)
return date.strftime(format)
except Exception as e:
logging.error(e)
return value
templates = Jinja2Templates(directory="templates")
templates.env.filters["formatdate"] = format_date
@app.get("/", response_class=HTMLResponse)
async def main(request: Request):
data = database.filter("world")
return templates.TemplateResponse(
request=request, name="index.j2", context={"data": data}
)
if __name__ == "__main__":
uvicorn.run(app, host="0.0.0.0", port=7860)