[ADD] Added recomended methods
This commit is contained in:
parent
5f55c6a156
commit
f1fbde2b09
@ -4,6 +4,7 @@ from customtkinter import *
|
||||
from CTkMenuBar import *
|
||||
from CTkMessagebox import *
|
||||
from typing import List
|
||||
import time
|
||||
|
||||
from app.utils_drive import *
|
||||
|
||||
@ -72,8 +73,12 @@ class App:
|
||||
self.drive_tree.delete(*self.drive_tree.get_children())
|
||||
self.__load_drives()
|
||||
for drive in self.drives:
|
||||
rec_method = "DoD 5220.22M"
|
||||
if drive.disk_type == "HDD":
|
||||
rec_method = "DoD 5220.22M,Гутмана"
|
||||
drive.rec_method = rec_method
|
||||
self.drive_tree.insert("", END, values=(
|
||||
drive.index, drive.name, drive.disk_type, self.__human_size(drive.capacity), drive.serial_num))
|
||||
drive.index, drive.name, drive.disk_type, self.__human_size(drive.capacity), drive.serial_num, rec_method))
|
||||
if self.selected is not None:
|
||||
items = self.drive_tree.get_children("")
|
||||
for item in items:
|
||||
@ -99,9 +104,10 @@ class App:
|
||||
disks = di.get_disk_list(sorting=True)
|
||||
self.drives = []
|
||||
for disk in disks:
|
||||
if "zram" not in disk.get_path() and disk.get_size() != 0:
|
||||
if "zram" not in disk.get_path() and "loop" not in disk.get_path() and disk.get_size() != 0:
|
||||
self.drives.append(Drive(disk.get_model(), disk.get_path(), disk.get_type_str(
|
||||
), disk.get_logical_block_size(), int(disk.get_size()*512), disk.get_serial_number(), disk.get_device_id()))
|
||||
print(disk)
|
||||
|
||||
def __init_table(self):
|
||||
|
||||
@ -119,7 +125,7 @@ class App:
|
||||
self.root.bind("<<TreeviewSelect>>", lambda event: self.root.focus_set())
|
||||
|
||||
# определяем столбцы
|
||||
columns = ("index", "name", "type", "capacity", "serial_num")
|
||||
columns = ("index", "name", "type", "capacity", "serial_num", "method")
|
||||
self.drive_tree = ttk.Treeview(
|
||||
columns=columns, show="headings", selectmode="browse")
|
||||
self.drive_tree.pack(fill=BOTH, expand=1, side=TOP)
|
||||
@ -130,12 +136,14 @@ class App:
|
||||
self.drive_tree.heading("type", text="Тип", anchor=W, command=lambda: self.__sort(2, False))
|
||||
self.drive_tree.heading("capacity", text="Объем", anchor=W, command=lambda: self.__sort(3, False))
|
||||
self.drive_tree.heading("serial_num", text="Серийный номер", anchor=W, command=lambda: self.__sort(4, False))
|
||||
self.drive_tree.heading("method", text="Рекомендуемый метод", anchor=W, command=lambda: self.__sort(5, False))
|
||||
|
||||
self.drive_tree.column("#1", stretch=NO, width=60, minwidth=60)
|
||||
self.drive_tree.column("#2", stretch=YES, width=150, minwidth=120)
|
||||
self.drive_tree.column("#3", stretch=NO, width=100, minwidth=100)
|
||||
self.drive_tree.column("#4", stretch=YES, width=150, minwidth=100)
|
||||
self.drive_tree.column("#4", stretch=NO, width=100, minwidth=50)
|
||||
self.drive_tree.column("#5", stretch=YES, width=150, minwidth=100)
|
||||
self.drive_tree.column("#6", stretch=YES, width=150, minwidth=150)
|
||||
|
||||
self.drive_tree.bind("<<TreeviewSelect>>", self.__drive_selected)
|
||||
|
||||
@ -151,6 +159,10 @@ class App:
|
||||
item = self.drive_tree.item(selected_item)
|
||||
self.selected_id = selected_item
|
||||
self.selected = item["values"]
|
||||
for drive in self.drives:
|
||||
if drive.index == self.selected[0]:
|
||||
method = drive.rec_method if "," not in drive.rec_method else drive.rec_method.split(",")[0]
|
||||
self.method_box.set(method)
|
||||
|
||||
def __erase_drive(self):
|
||||
method = self.method_box.get()
|
||||
@ -162,7 +174,7 @@ class App:
|
||||
self.erase_button.configure(state='disabled')
|
||||
self.drive_tree.configure(selectmode="none")
|
||||
|
||||
thread = None
|
||||
self.thread = None
|
||||
self.progressbar = CTkProgressBar(master=self.bottom_frame, orientation="horizontal", width=200)
|
||||
self.progressbar.set(0)
|
||||
self.progressbar.pack(side=LEFT, padx=6, pady=6)
|
||||
@ -172,6 +184,7 @@ class App:
|
||||
for drive in self.drives:
|
||||
if drive.index == self.selected[0]:
|
||||
self.thread = drive.erase(self.method_box.get(), progressbar=self.progressbar, progress_label=self.progress_label, result=self.wipe_result)
|
||||
self.start_time = time.time()
|
||||
self.__check_thread()
|
||||
|
||||
def __check_thread(self):
|
||||
@ -183,6 +196,7 @@ class App:
|
||||
self.drive_tree.configure(selectmode="browse")
|
||||
self.erase_button.configure(state='active')
|
||||
if self.wipe_result["result"]:
|
||||
print(f"Время затраченное на стирание: {time.time()-self.start_time}")
|
||||
CTkMessagebox(title="Успешно", message=f"{self.selected[1]} стёрт!")
|
||||
else:
|
||||
CTkMessagebox(title="Ошибка", message=f"{self.wipe_result['err']}")
|
||||
|
||||
@ -6,10 +6,6 @@ from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes
|
||||
from cryptography.hazmat.backends import default_backend
|
||||
|
||||
erasing_methods = {
|
||||
"2 прохода": {
|
||||
"num_passes": 2,
|
||||
"data": [b"\x00", "random"]
|
||||
},
|
||||
"Случайные данные": {
|
||||
"num_passes": 1,
|
||||
"data": ["random"]
|
||||
@ -61,6 +57,8 @@ class Drive():
|
||||
capacity: int
|
||||
|
||||
serial_num: str
|
||||
|
||||
rec_method: str
|
||||
|
||||
def __init__(self, name, path, disk_type, block_size, capacity, dev_id, index):
|
||||
self.name = name
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user