🌐 i18n(translation): add archive-related translations
- add new translation keys for archive feature in both German and English
✨ feat(server): implement archived servers feature
- create endpoints for listing and restoring archived servers
- add HTML template for displaying archived servers
- update navigation to include archived servers link
This commit is contained in:
parent
c6a2ed928b
commit
d0622ae361
4 changed files with 138 additions and 0 deletions
52
app/main.py
52
app/main.py
|
|
@ -624,6 +624,33 @@ def create_server(
|
|||
return RedirectResponse(url="/", status_code=303)
|
||||
|
||||
|
||||
@app.get("/servers/archived", response_class=HTMLResponse)
|
||||
def archived_servers(
|
||||
request: Request,
|
||||
session: Session = Depends(get_session),
|
||||
current_user: User = Depends(require_current_user),
|
||||
):
|
||||
"""List archived servers for the current user."""
|
||||
servers = session.exec(
|
||||
select(Server)
|
||||
.where(Server.archived == True)
|
||||
.where(Server.owner_id == current_user.id)
|
||||
.order_by(Server.provider, Server.name)
|
||||
).all()
|
||||
|
||||
csrf_token = ensure_csrf_token(request)
|
||||
|
||||
return templates.TemplateResponse(
|
||||
"servers_archived.html",
|
||||
{
|
||||
"request": request,
|
||||
"servers": servers,
|
||||
"current_user": current_user,
|
||||
"csrf_token": csrf_token,
|
||||
},
|
||||
)
|
||||
|
||||
|
||||
@app.get("/servers/{server_id}", response_class=HTMLResponse)
|
||||
def server_detail(
|
||||
server_id: int,
|
||||
|
|
@ -801,6 +828,31 @@ def archive_server(
|
|||
return RedirectResponse("/", status_code=303)
|
||||
|
||||
|
||||
@app.post("/servers/{server_id}/unarchive")
|
||||
def unarchive_server(
|
||||
server_id: int,
|
||||
request: Request,
|
||||
csrf_token: str = Form(...),
|
||||
session: Session = Depends(get_session),
|
||||
current_user: User = Depends(require_current_user),
|
||||
):
|
||||
"""Restore an archived server."""
|
||||
if not validate_csrf(request, csrf_token):
|
||||
raise HTTPException(
|
||||
status_code=status.HTTP_400_BAD_REQUEST, detail="Invalid CSRF token."
|
||||
)
|
||||
|
||||
server = session.get(Server, server_id)
|
||||
if not server or server.owner_id != current_user.id:
|
||||
return RedirectResponse("/", status_code=303)
|
||||
|
||||
server.archived = False
|
||||
server.updated_at = datetime.utcnow()
|
||||
session.add(server)
|
||||
session.commit()
|
||||
return RedirectResponse("/servers/archived", status_code=303)
|
||||
|
||||
|
||||
# ------------- Per-user map view -------------
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue