Загрузка данных


# 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("Миграция", "Функционал временно отключен.")