Basic Table
All checks were successful
Build and push Docker image at git tag / build (push) Successful in 1m44s

This commit is contained in:
2024-10-08 21:00:14 +02:00
parent e376956def
commit a4d0803d20
16 changed files with 269 additions and 23 deletions

View File

@ -154,7 +154,7 @@ class DB():
with self.db:
for row in self.db.execute(
"SELECT * FROM Messages {} LIMIT :lim OFFSET :off".format(where_clause),
"SELECT * FROM Messages {} ORDER BY time DESC LIMIT :lim OFFSET :off".format(where_clause),
params
):
yield self._create_row_object(row)
@ -165,7 +165,7 @@ class DB():
sender=row['sender'],
recipient=row['recipient'],
time=int(datetime.strptime(row['time'], self._DB_TIME_FORMAT).timestamp()),
message=AgentMessage.model_construct(row['json']),
message=AgentMessage.model_validate_json(row['json']),
processed=row['processed']
)

View File

@ -8,28 +8,57 @@
# source code released under the terms of GNU Public License Version 3
# https://www.gnu.org/licenses/gpl-3.0.txt
from urllib.parse import urlencode
from fastapi import APIRouter, Request
from fastapi.responses import HTMLResponse, RedirectResponse
from fastapi.templating import Jinja2Templates
from ums.management.db import DB
class Interface():
_PREFIX = "/app"
def __init__(self, template:Jinja2Templates, db:DB):
self.template = template
self.db = db
self.router = APIRouter(
prefix="/app",
prefix=self._PREFIX,
tags=["app, gui"]
)
self._add_routes()
def _add_routes(self):
@self.router.get("/", summary="Test")
def corpus(request: Request):
@self.router.get("/", response_class=RedirectResponse, summary="Redirect")
def index(request: Request) -> RedirectResponse:
return RedirectResponse(self._PREFIX + "/table")
@self.router.get("/table", response_class=HTMLResponse, summary="Table of messages")
def table(request: Request, limit:int=10, offset:int=0):
db_args = {
"limit" : limit,
"offset" : offset
}
print(self.db.by_count(3))
return {}
def pagination_link(**kwargs):
link_args = db_args.copy()
link_args.update(kwargs)
return urlencode(link_args)
return self.template.TemplateResponse(
'table.html',
{"request" : request,
"db" : self.db, "db_args" : db_args,
"pagination_link" : pagination_link
}
)
@self.router.get("/new", response_class=HTMLResponse, summary="Add new riddle")
def new(request: Request):
return self.template.TemplateResponse(
'new.html',
{"request" : request}
)

View File

@ -10,7 +10,10 @@
import os
from datetime import datetime
from fastapi import FastAPI, Request
from fastapi.responses import HTMLResponse
from fastapi.templating import Jinja2Templates
from ums.management.interface import Interface
@ -44,13 +47,21 @@ class WebMain():
directory=TEMPLATE_PATH,
auto_reload=True
)
self.template.env.globals["timestamp2date"] = lambda t: \
datetime.fromtimestamp(t).strftime("%H:%M:%S %d.%m.%Y")
def _add_routers(self):
interface_router = Interface(self.template, self.db)
self.app.include_router(interface_router.router)
def _add_routes(self):
@self.app.get("/index", response_class=HTMLResponse, summary="Link list")
def index(request: Request):
return self.template.TemplateResponse(
'index.html',
{"request" : request}
)
@self.app.get("/test", summary="Test")
def huhu(request: Request) -> AgentMessage: