Create views for organizing secrets in groups

This commit is contained in:
2025-06-01 15:06:07 +02:00
parent 773a1e2976
commit ba936ac645
28 changed files with 1152 additions and 396 deletions

View File

@ -134,6 +134,16 @@ class PasswordContext:
raise RuntimeError(f"Cannot get password for entry {entry_name}")
def get_entry_group(self, entry_name: str) -> str | None:
"""Get the group for an entry."""
entry = self._get_entry(entry_name)
if not entry:
return None
if entry.group.is_root_group:
return None
return str(entry.group.name)
def get_secret_groups(self, pattern: str | None = None, regex: bool = True) -> list[SecretGroup]:
"""Get secret groups.
@ -145,13 +155,19 @@ class PasswordContext:
self.keepass.find_groups(name=pattern, regex=regex),
)
else:
all_groups = cast(list[pykeepass.group.Group], self.keepass.groups)
# We skip the root group
groups = [group for group in all_groups if not group.is_root_group]
groups = self._root_group.subgroups
secret_groups = [_kp_group_to_secret_group(group) for group in groups]
return secret_groups
def get_ungrouped_secrets(self) -> list[str]:
"""Get secrets without groups."""
entries: list[str] = []
for entry in self._root_group.entries:
entries.append(str(entry.title))
return entries
def add_group(
self, name: str, description: str | None = None, parent_group: str | None = None
) -> None: