From 16132e6fc9d54f237f260227f99dad5b639891db Mon Sep 17 00:00:00 2001 From: Daniel Girtler Date: Wed, 21 Jun 2023 17:52:06 +1000 Subject: Fix 1862 (#1884) * Fix 1862 * Update --------- Co-authored-by: Daniel Girtler --- archinstall/lib/disk/device_model.py | 41 +++++++++++++++++++++++++++--------- 1 file changed, 31 insertions(+), 10 deletions(-) (limited to 'archinstall/lib/disk/device_model.py') diff --git a/archinstall/lib/disk/device_model.py b/archinstall/lib/disk/device_model.py index 36dd0c4f..8e72390c 100644 --- a/archinstall/lib/disk/device_model.py +++ b/archinstall/lib/disk/device_model.py @@ -137,6 +137,10 @@ class Unit(Enum): Percent = '%' # size in percentile + @staticmethod + def get_all_units() -> List[str]: + return [u.name for u in Unit] + @dataclass class Size: @@ -214,16 +218,25 @@ class Size: value = int(self._normalize() / target_unit.value) # type: ignore return Size(value, target_unit) + def as_text(self) -> str: + return self.format_size( + self.unit, + self.sector_size + ) + def format_size( self, target_unit: Unit, - sector_size: Optional[Size] = None + sector_size: Optional[Size] = None, + include_unit: bool = True ) -> str: if self.unit == Unit.Percent: return f'{self.value}%' else: target_size = self.convert(target_unit, sector_size) - return f'{target_size.value} {target_unit.name}' + if include_unit: + return f'{target_size.value} {target_unit.name}' + return f'{target_size.value}' def _normalize(self) -> int: """ @@ -280,7 +293,7 @@ class _PartitionInfo: mountpoints: List[Path] btrfs_subvol_infos: List[_BtrfsSubvolumeInfo] = field(default_factory=list) - def as_json(self) -> Dict[str, Any]: + def table_data(self) -> Dict[str, Any]: part_info = { 'Name': self.name, 'Type': self.type.value, @@ -343,7 +356,7 @@ class _DeviceInfo: read_only: bool dirty: bool - def as_json(self) -> Dict[str, Any]: + def table_data(self) -> Dict[str, Any]: total_free_space = sum([region.get_length(unit=Unit.MiB) for region in self.free_space_regions]) return { 'Model': self.model, @@ -440,7 +453,7 @@ class SubvolumeModification: 'nodatacow': self.nodatacow } - def as_json(self) -> Dict[str, Any]: + def table_data(self) -> Dict[str, Any]: return { 'name': str(self.name), 'mountpoint': str(self.mountpoint), @@ -465,12 +478,20 @@ class DeviceGeometry: def get_length(self, unit: Unit = Unit.sectors) -> int: return self._geometry.getLength(unit.name) - def as_json(self) -> Dict[str, Any]: + def table_data(self) -> Dict[str, Any]: + start = Size(self._geometry.start, Unit.sectors, self._sector_size) + end = Size(self._geometry.end, Unit.sectors, self._sector_size) + length = Size(self._geometry.getLength(), Unit.sectors, self._sector_size) + + start_str = f'{self._geometry.start} / {start.format_size(Unit.B, include_unit=False)}' + end_str = f'{self._geometry.end} / {end.format_size(Unit.B, include_unit=False)}' + length_str = f'{self._geometry.getLength()} / {length.format_size(Unit.B, include_unit=False)}' + return { 'Sector size': self._sector_size.value, - 'Start sector': self._geometry.start, - 'End sector': self._geometry.end, - 'Length': self._geometry.getLength() + 'Start (sector/B)': start_str, + 'End (sector/B)': end_str, + 'Length (sectors/B)': length_str } @@ -700,7 +721,7 @@ class PartitionModification: 'btrfs': [vol.__dump__() for vol in self.btrfs_subvols] } - def as_json(self) -> Dict[str, Any]: + def table_data(self) -> Dict[str, Any]: """ Called for displaying data in table format """ -- cgit v1.2.3-70-g09d2