Skip to content

Commit

Permalink
filesystem: store the actual size in bytes alongside the human readab…
Browse files Browse the repository at this point in the history
…le size

Signed-off-by: Olivier Gayot <[email protected]>
  • Loading branch information
ogayot committed Aug 9, 2023
1 parent b0f1030 commit c1fd3f3
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 1 deletion.
5 changes: 5 additions & 0 deletions subiquity/ui/views/filesystem/partition.py
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,7 @@ def _make_widget(self, form):
class SizeWidget(StringEditor):
def __init__(self, form):
self.form = form
self.accurate_value: Optional[int] = None
super().__init__()

def lost_focus(self):
Expand All @@ -114,6 +115,9 @@ def lost_focus(self):
),
)
)
# This will invoke self.form.clean_size() and it is expected that
# size_str (and therefore self.value) are propertly aligned.
self.accurate_value = self.form.size
else:
aligned_sz = align_up(sz, self.form.alignment)
aligned_sz_str = humanize_size(aligned_sz)
Expand All @@ -125,6 +129,7 @@ def lost_focus(self):
_("Rounded size up to {size}").format(size=aligned_sz_str),
)
)
self.accurate_value = aligned_sz


class SizeField(FormField):
Expand Down
4 changes: 4 additions & 0 deletions subiquity/ui/views/filesystem/tests/test_partition.py
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,7 @@ def test_create_partition(self):
gap = gaps.Gap(device=disk, offset=1 << 20, size=99 << 30)
view, stretchy = make_partition_view(model, disk, gap=gap)
view_helpers.enter_data(stretchy.form, valid_data)
stretchy.form.size.widget.lost_focus()
view_helpers.click(stretchy.form.done_btn.base_widget)
valid_data["mount"] = "/"
valid_data["size"] = dehumanize_size(valid_data["size"])
Expand All @@ -77,6 +78,7 @@ def test_edit_partition(self):
view, stretchy = make_partition_view(model, disk, partition=partition)
self.assertTrue(stretchy.form.done_btn.enabled)
view_helpers.enter_data(stretchy.form, form_data)
stretchy.form.size.widget.lost_focus()
view_helpers.click(stretchy.form.done_btn.base_widget)
expected_data = {
"size": dehumanize_size(form_data["size"]),
Expand Down Expand Up @@ -111,6 +113,7 @@ def test_edit_existing_partition(self):
self.assertFalse(stretchy.form.size.enabled)
self.assertTrue(stretchy.form.done_btn.enabled)
view_helpers.enter_data(stretchy.form, form_data)
stretchy.form.size.widget.lost_focus()
view_helpers.click(stretchy.form.done_btn.base_widget)
expected_data = {
"fstype": "xfs",
Expand Down Expand Up @@ -177,6 +180,7 @@ def test_edit_boot_partition(self):
self.assertEqual(stretchy.form.mount.value, "/boot/efi")

view_helpers.enter_data(stretchy.form, form_data)
stretchy.form.size.widget.lost_focus()
view_helpers.click(stretchy.form.done_btn.base_widget)
expected_data = {
"size": dehumanize_size(form_data["size"]),
Expand Down
6 changes: 5 additions & 1 deletion subiquitycore/ui/form.py
Original file line number Diff line number Diff line change
Expand Up @@ -531,7 +531,11 @@ def as_data(self):
data = {}
for field in self._fields:
if field.enabled:
data[field.field.name] = field.value
accurate_value = getattr(field.widget, "accurate_value", None)
if accurate_value is not None:
data[field.field.name] = accurate_value
else:
data[field.field.name] = field.value
return data


Expand Down

0 comments on commit c1fd3f3

Please sign in to comment.