Files
debian-manager/app/ui/pages/server_detail.py
T
dinlo f624fee5e0 Initial commit: Debian Manager — управление Debian-серверами
- SSH/SFTP управление без агентов
- Пакеты (apt), Docker, файлы, systemd, ufw, cron
- Плейбуки, групповые операции, планировщик
- Бэкапы, отчёты, Portainer, Proxmox VE, Gitea Deploy
- Терминал, Telegram-уведомления, тёмная/светлая тема
2026-09-05 19:46:45 +08:00

65 lines
2.8 KiB
Python

"""Страница сервера: вкладки Обзор / Пакеты / Docker / Файлы / Сервисы / Firewall / Cron."""
import flet as ft
from app.core import servers as servers_core
from app.ui.tabs.overview import OverviewTab
from app.ui.tabs.packages import PackagesTab
from app.ui.tabs.docker_tab import DockerTab
from app.ui.tabs.files_tab import FilesTab
from app.ui.tabs.systemd_tab import SystemdTab
from app.ui.tabs.firewall_tab import FirewallTab
from app.ui.tabs.cron_tab import CronTab
from app.ui.tabs.terminal_tab import TerminalTab
class ServerDetailPage(ft.Column):
def __init__(self, page: ft.Page, server_id: int, go):
super().__init__(expand=True)
self._page = page
self.go = go
srv = servers_core.get_server(server_id)
tabs = ft.Tabs(
selected_index=0,
length=8,
expand=True,
content=ft.Column(
expand=True,
controls=[
ft.TabBar(tabs=[
ft.Tab(label="Обзор", icon=ft.Icons.INFO),
ft.Tab(label="Пакеты", icon=ft.Icons.INVENTORY_2),
ft.Tab(label="Docker", icon=ft.Icons.AC_UNIT),
ft.Tab(label="Файлы", icon=ft.Icons.FOLDER),
ft.Tab(label="Сервисы", icon=ft.Icons.SETTINGS_APPLICATIONS),
ft.Tab(label="Firewall", icon=ft.Icons.SHIELD),
ft.Tab(label="Cron", icon=ft.Icons.SCHEDULE),
ft.Tab(label="Терминал", icon=ft.Icons.TERMINAL),
]),
ft.TabBarView(
expand=True,
controls=[
ft.Container(padding=10, content=OverviewTab(page, srv)),
ft.Container(padding=10, content=PackagesTab(page, srv)),
ft.Container(padding=10, content=DockerTab(page, srv)),
ft.Container(padding=10, content=FilesTab(page, srv)),
ft.Container(padding=10, content=SystemdTab(page, srv)),
ft.Container(padding=10, content=FirewallTab(page, srv)),
ft.Container(padding=10, content=CronTab(page, srv)),
ft.Container(padding=0, content=TerminalTab(page, srv)),
],
),
],
),
)
self.controls = [
ft.Row([
ft.IconButton(ft.Icons.ARROW_BACK, on_click=lambda e: go("dashboard")),
ft.Text(srv.name, size=24, weight=ft.FontWeight.BOLD),
ft.Text(f"{srv.username}@{srv.host}:{srv.port}",
size=13, color=ft.Colors.GREY_500),
]),
tabs,
]