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