From 11fca148beb3a518227a041557106fe41ef60ff8 Mon Sep 17 00:00:00 2001 From: N0VA Date: Tue, 3 Feb 2026 19:49:52 +0100 Subject: [PATCH] fix(ui): handle NoneType fstype and remove duplicate code in partitioning page --- iridium_installer/ui/pages/partitioning.py | 109 +-------------------- 1 file changed, 2 insertions(+), 107 deletions(-) diff --git a/iridium_installer/ui/pages/partitioning.py b/iridium_installer/ui/pages/partitioning.py index 3273089..e693341 100644 --- a/iridium_installer/ui/pages/partitioning.py +++ b/iridium_installer/ui/pages/partitioning.py @@ -291,7 +291,7 @@ class PartitioningPage(Adw.Bin): p_size = int(p.get("size", 0)) covered_size += p_size - fstype = p.get("fstype", "").lower() + fstype = (p.get("fstype") or "").lower() style = "part-root" if "fat" in fstype or "efi" in fstype: style = "part-efi" @@ -302,7 +302,7 @@ class PartitioningPage(Adw.Bin): { "type": "partition", "name": p.get("name"), - "filesystem": p.get("fstype", "Unknown"), + "filesystem": p.get("fstype") or "Unknown", "label": p.get("name"), "mount_point": p.get("mountpoint", ""), "size": self.format_size(p_size), @@ -535,108 +535,3 @@ class PartitioningPage(Adw.Bin): def get_config(self): return {"partitions": self.partitions} - - def load_partitions(self, disk_device=None): - self.current_disk_path = disk_device - target_disk = None - - try: - result = subprocess.run( - ["lsblk", "-J", "-b", "-o", "NAME,SIZE,TYPE,FSTYPE,MOUNTPOINT,PKNAME"], - capture_output=True, - text=True, - ) - if result.returncode == 0: - data = json.loads(result.stdout) - devices = data.get("blockdevices", []) - - if disk_device: - dev_name = disk_device.replace("/dev/", "") - for dev in devices: - if dev.get("name") == dev_name: - target_disk = dev - break - - if not target_disk and not disk_device: - for dev in devices: - if ( - dev.get("type") == "disk" - and not dev.get("name").startswith("zram") - and not dev.get("name").startswith("loop") - ): - target_disk = dev - break - - except Exception as e: - print(f"Error loading disks: {e}") - - if target_disk: - self.disk_row.set_title(target_disk.get("name", "Unknown Disk")) - self.disk_row.set_subtitle( - f"Size: {self.format_size(target_disk.get('size', 0))}" - ) - - raw_parts = target_disk.get("children", []) - self.partitions = [] - - total_disk_size = int(target_disk.get("size", 0)) - covered_size = 0 - - if raw_parts: - for p in raw_parts: - p_size = int(p.get("size", 0)) - covered_size += p_size - - fstype = p.get("fstype", "").lower() - style = "part-root" - if "fat" in fstype or "efi" in fstype: - style = "part-efi" - elif "swap" in fstype: - style = "part-swap" - - self.partitions.append( - { - "type": "partition", - "name": p.get("name"), - "filesystem": p.get("fstype", "Unknown"), - "label": p.get("name"), - "mount_point": p.get("mountpoint", ""), - "size": self.format_size(p_size), - "bytes": p_size, - "style_class": style, - "expand": False, - } - ) - - remaining = total_disk_size - covered_size - if remaining > 100 * 1024 * 1024: - self.partitions.append( - { - "type": "empty", - "name": "Unallocated", - "size": self.format_size(remaining), - "bytes": remaining, - "style_class": "part-empty", - "expand": False, - } - ) - - for p in self.partitions: - ratio = p["bytes"] / total_disk_size if total_disk_size > 0 else 0 - width = int(ratio * 800) - if width < 50: - width = 50 - p["width_request"] = width - - else: - self.partitions = [ - { - "type": "empty", - "name": "No Disk Selected", - "size": "-", - "style_class": "part-empty", - "width_request": 300, - } - ] - - self.refresh_bar()