Загрузка данных
# modules/administrator/admin_db_inter.py
import tkinter as tk
from tkinter import ttk, messagebox
import os # Оставляем для создания папок в заглушках (безопасно)
class AdminDBInter(tk.Toplevel):
def __init__(self, parent):
"""
Окно управления базами данных (Уровень 2).
:param parent: Главное окно приложения (MainInterface)
"""
super().__init__(parent)
self.parent_main = parent
# --- Настройки окна ---
self.title("Управление базами данных")
self.geometry("600x400")
self.resizable(True, True) # Разрешаем изменение размера как в оригинале
# Модальность поверх родителя
self.transient(parent)
self.grab_set()
# Центрируем со смещением (как у первого окна пользователей)
self.update_idletasks()
p_x = self.parent_main.winfo_rootx()
p_y = self.parent_main.winfo_rooty()
win_w = self.winfo_width()
win_h = self.winfo_height()
x = p_x + 20
y = p_y + 20
self.geometry(f"+{x}+{y}")
# Строим интерфейс
self.build_ui()
def build_ui(self):
"""Сборка интерфейса"""
container = ttk.Frame(self)
container.pack(fill="both", expand=True)
top_panel = ttk.Frame(container)
top_panel.pack(fill="x", pady=10)
# Переключатель баз данных
self.use_master_db = tk.BooleanVar(value=False)
style = ttk.Style()
style.configure("RedText.TCheckbutton", foreground="red")
master_db_checkbox = ttk.Checkbutton(
top_panel,
text="Использовать основную базу данных",
variable=self.use_master_db,
style="RedText.TCheckbutton",
)
master_db_checkbox.pack(side="left", padx=10)
tools_panel = ttk.Frame(container)
tools_panel.pack(fill="x", pady=10)
# Кнопки инструментов (заглушки)
btn_current_backup = ttk.Button(
tools_panel,
text="Создать резервную копию текущей базы",
command=self.backup_current_database,
)
btn_current_backup.pack(side="left", padx=10)
btn_restore = ttk.Button(tools_panel, text="Восстановить базу данных", command=self.restore_database)
btn_restore.pack(side="left", padx=10)
btn_migrate = ttk.Button(tools_panel, text="Мигрировать данные", command=self.migrate_databases)
btn_migrate.pack(side="left", padx=10)
# Таблица резервных копий
backup_columns = ("Дата", "Файл")
self.backups_tree = ttk.Treeview(
container, columns=backup_columns, show="headings"
)
for col in backup_columns:
self.backups_tree.heading(col, text=col)
self.backups_tree.column(col, width=200)
self.backups_tree.pack(fill="both", expand=True)
# Загрузка статичных заглушек
self.load_backups()
def load_backups(self):
"""Заполняет таблицу тестовыми данными."""
self.backups_tree.delete(*self.backups_tree.get_children())
test_rows = [
("2026-07-08 15:30:00", "db_backup_1.db"),
("2026-07-07 10:15:22", "db_backup_0.db"),
]
for row in test_rows:
self.backups_tree.insert("", "end", values=row)
# --- Заглушки функционала ---
def backup_current_database(self):
messagebox.showinfo("Резервное копирование", "Функционал временно отключен.")
self.load_backups()
def restore_database(self):
selected_item = self.backups_tree.selection()
if not selected_item:
messagebox.showwarning("Предупреждение", "Сначала выберите резервную копию для восстановления.")
return
messagebox.showinfo("Восстановление", "Функционал временно отключен.")
self.load_backups()
def migrate_databases(self):
messagebox.showinfo("Миграция", "Функционал временно отключен.")