Don't display partition menu options if not allow

- Skip add_partition entry for bcache, raid, and lvm devices
- Don't display Format entire partition if it's already been formated

Signed-off-by: Ryan Harper <ryan.harper@canonical.com>
This commit is contained in:
Ryan Harper 2015-11-19 18:31:30 -06:00
parent 02f7aade37
commit 9872bdfb94
2 changed files with 22 additions and 8 deletions

View File

@ -122,6 +122,14 @@ class FilesystemModel(ModelPolicy):
"10",
]
# th following blocktypes cannot be partitioned
no_partition_blocktypes = [
"bcache",
"lvm_partition",
"lvm_volgroup",
"raid",
]
def __init__(self, prober, opts):
self.opts = opts
self.prober = prober

View File

@ -410,9 +410,12 @@ class DiskPartitionView(ViewPolicy):
changes to the button depending on if existing
partitions exist or not.
"""
return Pile([self.add_partition_w(),
menus = [
self.add_partition_w(),
self.create_swap_w(),
self.show_disk_info_w()])
self.show_disk_info_w(),
]
return Pile([m for m in menus if m])
def show_disk_info_w(self):
""" Runs hdparm against device and displays its output
@ -431,11 +434,11 @@ class DiskPartitionView(ViewPolicy):
"""
text = ("Format or create swap on entire "
"device (unusual, advanced)")
if len(self.disk_obj.partitions) == 0:
if len(self.disk_obj.partitions) == 0 and \
self.disk_obj.available:
return Color.menu_button(menu_btn(label=text,
on_press=self.create_swap),
focus_map='menu_button focus')
return Color.info_minor(Text(text))
def add_partition_w(self):
""" Handles presenting the add partition widget button
@ -445,6 +448,9 @@ class DiskPartitionView(ViewPolicy):
if len(self.disk_obj.partitions) > 0:
text = "Add partition (max size {})".format(
_humanize_size(self.disk_obj.freespace))
if self.disk_obj.available and \
self.disk_obj.blocktype not in self.model.no_partition_blocktypes:
return Color.menu_button(menu_btn(label=text,
on_press=self.add_partition),
focus_map='menu_button focus')