Send patches - preferably formatted by git format-patch - to patches at archlinux32 dot org.
summaryrefslogtreecommitdiff
path: root/archinstall/lib/user_interaction
diff options
context:
space:
mode:
authorDaniel Girtler <blackrabbit256@gmail.com>2022-06-14 22:38:39 +1000
committerGitHub <noreply@github.com>2022-06-14 14:38:39 +0200
commit5c3c1312a49e1c110d4c5825fbb8242868544900 (patch)
tree4dddbd849c5ea7d5a128f126849bc450bc69cda6 /archinstall/lib/user_interaction
parent86531ef62f777f91ef2f4ca7d102abdfccb11ded (diff)
Update list manager (#1331)
* Rework partition management * Update * Update list manager * Update * Update Co-authored-by: Daniel Girtler <girtler.daniel@gmail.com>
Diffstat (limited to 'archinstall/lib/user_interaction')
-rw-r--r--archinstall/lib/user_interaction/manage_users_conf.py22
-rw-r--r--archinstall/lib/user_interaction/network_conf.py20
-rw-r--r--archinstall/lib/user_interaction/partitioning_conf.py14
-rw-r--r--archinstall/lib/user_interaction/subvolume_config.py32
4 files changed, 40 insertions, 48 deletions
diff --git a/archinstall/lib/user_interaction/manage_users_conf.py b/archinstall/lib/user_interaction/manage_users_conf.py
index 33c31342..a97328c2 100644
--- a/archinstall/lib/user_interaction/manage_users_conf.py
+++ b/archinstall/lib/user_interaction/manage_users_conf.py
@@ -25,7 +25,7 @@ class UserList(ListManager):
str(_('Promote/Demote user')),
str(_('Delete User'))
]
- super().__init__(prompt, lusers, self._actions, self._actions[0])
+ super().__init__(prompt, lusers, [self._actions[0]], self._actions[1:])
def reformat(self, data: List[User]) -> Dict[str, User]:
table = FormattedOutput.as_table(data)
@@ -45,27 +45,25 @@ class UserList(ListManager):
def selected_action_display(self, user: User) -> str:
return user.username
- def exec_action(self, data: List[User]) -> List[User]:
- active_user = self.target if self.target else None
-
- if self.action == self._actions[0]: # add
+ def handle_action(self, action: str, entry: Optional[User], data: List[User]) -> List[User]:
+ if action == self._actions[0]: # add
new_user = self._add_user()
if new_user is not None:
# in case a user with the same username as an existing user
# was created we'll replace the existing one
data = [d for d in data if d.username != new_user.username]
data += [new_user]
- elif self.action == self._actions[1]: # change password
- prompt = str(_('Password for user "{}": ').format(active_user.username))
+ elif action == self._actions[1]: # change password
+ prompt = str(_('Password for user "{}": ').format(entry.username))
new_password = get_password(prompt=prompt)
if new_password:
- user = next(filter(lambda x: x == active_user, data), 1)
+ user = next(filter(lambda x: x == entry, data), 1)
user.password = new_password
- elif self.action == self._actions[2]: # promote/demote
- user = next(filter(lambda x: x == active_user, data), 1)
+ elif action == self._actions[2]: # promote/demote
+ user = next(filter(lambda x: x == entry, data), 1)
user.sudo = False if user.sudo else True
- elif self.action == self._actions[3]: # delete
- data = [d for d in data if d != active_user]
+ elif action == self._actions[3]: # delete
+ data = [d for d in data if d != entry]
return data
diff --git a/archinstall/lib/user_interaction/network_conf.py b/archinstall/lib/user_interaction/network_conf.py
index 4f22b790..1908603e 100644
--- a/archinstall/lib/user_interaction/network_conf.py
+++ b/archinstall/lib/user_interaction/network_conf.py
@@ -29,7 +29,7 @@ class ManualNetworkConfig(ListManager):
str(_('Delete interface'))
]
- super().__init__(prompt, ifaces, self._actions, self._actions[0])
+ super().__init__(prompt, ifaces, [self._actions[0]], self._actions[1:])
def reformat(self, data: List[NetworkConfiguration]) -> Dict[str, Optional[NetworkConfiguration]]:
table = FormattedOutput.as_table(data)
@@ -49,21 +49,19 @@ class ManualNetworkConfig(ListManager):
def selected_action_display(self, iface: NetworkConfiguration) -> str:
return iface.iface if iface.iface else ''
- def exec_action(self, data: List[NetworkConfiguration]):
- active_iface: Optional[NetworkConfiguration] = self.target if self.target else None
-
- if self.action == self._actions[0]: # add
+ def handle_action(self, action: str, entry: Optional[NetworkConfiguration], data: List[NetworkConfiguration]):
+ if action == self._actions[0]: # add
iface_name = self._select_iface(data)
if iface_name:
iface = NetworkConfiguration(NicType.MANUAL, iface=iface_name)
iface = self._edit_iface(iface)
data += [iface]
- elif active_iface:
- if self.action == self._actions[1]: # edit interface
- data = [d for d in data if d.iface != active_iface.iface]
- data.append(self._edit_iface(active_iface))
- elif self.action == self._actions[2]: # delete
- data = [d for d in data if d != active_iface]
+ elif entry:
+ if action == self._actions[1]: # edit interface
+ data = [d for d in data if d.iface != entry.iface]
+ data.append(self._edit_iface(entry))
+ elif action == self._actions[2]: # delete
+ data = [d for d in data if d != entry]
return data
diff --git a/archinstall/lib/user_interaction/partitioning_conf.py b/archinstall/lib/user_interaction/partitioning_conf.py
index 0f4784b6..8bf76121 100644
--- a/archinstall/lib/user_interaction/partitioning_conf.py
+++ b/archinstall/lib/user_interaction/partitioning_conf.py
@@ -154,9 +154,6 @@ def manage_new_and_existing_partitions(block_device: 'BlockDevice') -> Dict[str,
block_device_struct = {"partitions": [partition.__dump__() for partition in block_device.partitions.values()]}
original_layout = copy.deepcopy(block_device_struct)
- # Test code: [part.__dump__() for part in block_device.partitions.values()]
- # TODO: Squeeze in BTRFS subvolumes here
-
new_partition = str(_('Create a new partition'))
suggest_partition_layout = str(_('Suggest partition layout'))
delete_partition = str(_('Delete a partition'))
@@ -209,6 +206,7 @@ def manage_new_and_existing_partitions(block_device: 'BlockDevice') -> Dict[str,
return original_layout
elif task == save_and_exit:
break
+
if task == new_partition:
from ..disk import valid_parted_position
@@ -222,8 +220,9 @@ def manage_new_and_existing_partitions(block_device: 'BlockDevice') -> Dict[str,
if fs_choice.type_ == MenuSelectionType.Esc:
continue
- prompt = _('Enter the start sector (percentage or block number, default: {}): ').format(
- block_device.first_free_sector)
+ prompt = str(_('Enter the start sector (percentage or block number, default: {}): ')).format(
+ block_device.first_free_sector
+ )
start = input(prompt).strip()
if not start.strip():
@@ -232,8 +231,9 @@ def manage_new_and_existing_partitions(block_device: 'BlockDevice') -> Dict[str,
else:
end_suggested = '100%'
- prompt = _('Enter the end sector of the partition (percentage or block number, ex: {}): ').format(
- end_suggested)
+ prompt = str(_('Enter the end sector of the partition (percentage or block number, ex: {}): ')).format(
+ end_suggested
+ )
end = input(prompt).strip()
if not end.strip():
diff --git a/archinstall/lib/user_interaction/subvolume_config.py b/archinstall/lib/user_interaction/subvolume_config.py
index e2797bba..94150dee 100644
--- a/archinstall/lib/user_interaction/subvolume_config.py
+++ b/archinstall/lib/user_interaction/subvolume_config.py
@@ -12,13 +12,13 @@ if TYPE_CHECKING:
class SubvolumeList(ListManager):
- def __init__(self, prompt: str, current_volumes: List[Subvolume]):
+ def __init__(self, prompt: str, subvolumes: List[Subvolume]):
self._actions = [
str(_('Add subvolume')),
str(_('Edit subvolume')),
str(_('Delete subvolume'))
]
- super().__init__(prompt, current_volumes, self._actions, self._actions[0])
+ super().__init__(prompt, subvolumes, [self._actions[0]], self._actions[1:])
def reformat(self, data: List[Subvolume]) -> Dict[str, Optional[Subvolume]]:
table = FormattedOutput.as_table(data)
@@ -75,13 +75,8 @@ class SubvolumeList(ListManager):
return subvolume
- def exec_action(self, data: List[Subvolume]) -> List[Subvolume]:
- if self.target:
- active_subvolume = self.target
- else:
- active_subvolume = None
-
- if self.action == self._actions[0]: # add
+ def handle_action(self, action: str, entry: Optional[Subvolume], data: List[Subvolume]) -> List[Subvolume]:
+ if action == self._actions[0]: # add
new_subvolume = self._add_subvolume()
if new_subvolume is not None:
@@ -89,14 +84,15 @@ class SubvolumeList(ListManager):
# was created we'll replace the existing one
data = [d for d in data if d.name != new_subvolume.name]
data += [new_subvolume]
- elif self.action == self._actions[1]: # edit subvolume
- new_subvolume = self._add_subvolume(active_subvolume)
-
- if new_subvolume is not None:
- # we'll remove the original subvolume and add the modified version
- data = [d for d in data if d.name != active_subvolume.name and d.name != new_subvolume.name]
- data += [new_subvolume]
- elif self.action == self._actions[2]: # delete
- data = [d for d in data if d != active_subvolume]
+ elif entry is not None:
+ if action == self._actions[1]: # edit subvolume
+ new_subvolume = self._add_subvolume(entry)
+
+ if new_subvolume is not None:
+ # we'll remove the original subvolume and add the modified version
+ data = [d for d in data if d.name != entry.name and d.name != new_subvolume.name]
+ data += [new_subvolume]
+ elif action == self._actions[2]: # delete
+ data = [d for d in data if d != entry]
return data