diff --git a/packetserver/http/routers/objects_html.py b/packetserver/http/routers/objects_html.py new file mode 100644 index 0000000..3cb02e1 --- /dev/null +++ b/packetserver/http/routers/objects_html.py @@ -0,0 +1,31 @@ +from fastapi import APIRouter, Depends, Request, Form, File, UploadFile +from fastapi.responses import HTMLResponse, RedirectResponse +from packetserver.http.dependencies import get_current_http_user +from packetserver.http.auth import HttpUser +from packetserver.http.server import templates +from packetserver.http.routers.objects import router as api_router # to call internal endpoints +from packetserver.http.database import DbDependency + +router = APIRouter(tags=["objects_html"]) + +# Internal reference to the list function (assuming it's list_my_objects) +from packetserver.http.routers.objects import list_my_objects as api_list_objects + +@router.get("/objects", response_class=HTMLResponse) +async def objects_page( + db: DbDependency, + request: Request, + current_user: HttpUser = Depends(get_current_http_user) +): + # Call the API list endpoint internally + objects_resp = await api_list_objects(db, current_user=current_user) # db injected via dependency + objects = objects_resp # it's already the list + + return templates.TemplateResponse( + "objects.html", + { + "request": request, + "current_user": current_user.username, + "objects": objects + } + ) \ No newline at end of file diff --git a/packetserver/http/server.py b/packetserver/http/server.py index 53e2540..dde86dc 100644 --- a/packetserver/http/server.py +++ b/packetserver/http/server.py @@ -43,6 +43,7 @@ from .routers import dashboard, bulletins from .routers.message_detail import router as message_detail_router from .routers.messages import html_router from .routers.objects import router as objects_router +from .routers import objects_html # initialize database init_db() @@ -58,5 +59,6 @@ app.include_router(bulletins.html_router) app.include_router(message_detail_router) app.include_router(html_router) app.include_router(objects_router) +app.include_router(objects_html.router) diff --git a/packetserver/http/templates/base.html b/packetserver/http/templates/base.html index 7cbe826..eb089dd 100644 --- a/packetserver/http/templates/base.html +++ b/packetserver/http/templates/base.html @@ -19,6 +19,7 @@ Profile Messages Bulletins + Objects diff --git a/packetserver/http/templates/objects.html b/packetserver/http/templates/objects.html new file mode 100644 index 0000000..fe25933 --- /dev/null +++ b/packetserver/http/templates/objects.html @@ -0,0 +1,99 @@ +{% extends "base.html" %} + +{% block title %}My Objects - {{ current_user }}{% endblock %} + +{% block content %} +

My Objects

+ + +
+
+
Upload File
+
+
+ +
+
+ +
+
+ + +
+ +
+
+
+ + +
+
+
Create Text Object
+
+
+ +
+
+ +
+
+ + +
+ +
+
+
+ + +{% if objects %} + + + + + + + + + + + + + {% for obj in objects %} + + + + + + + + + {% endfor %} + +
NameSizeTypeUploadedVisibilityActions
{{ obj.name }}{{ "%0.1f KB" | format(obj.size / 1024) if obj.size > 1024 else obj.size ~ " bytes" }} + {% if obj.binary %} + Binary + {% else %} + Text + {% endif %} + {{ obj.created_at[:10] }} + {% if obj.private %} + Private + {% else %} + Public + {% endif %} + + {% if not obj.binary %} + View Text + {% endif %} + Download +
+ + +
+
+{% else %} +

No objects uploaded yet.

+{% endif %} + +{% endblock %} \ No newline at end of file