mirror of
https://github.com/PR0M3TH3AN/SeedPass.git
synced 2025-09-08 23:38:49 +00:00
Update EntryDialog to modify entry source
This commit is contained in:
@@ -251,29 +251,61 @@ class EntryDialog(toga.Window):
|
|||||||
|
|
||||||
if self.entry_id is None:
|
if self.entry_id is None:
|
||||||
if kind == EntryType.PASSWORD.value:
|
if kind == EntryType.PASSWORD.value:
|
||||||
self.main.entries.add_entry(label, length, username=username, url=url)
|
entry_id = self.main.entries.add_entry(
|
||||||
|
label, length, username=username, url=url
|
||||||
|
)
|
||||||
elif kind == EntryType.TOTP.value:
|
elif kind == EntryType.TOTP.value:
|
||||||
self.main.entries.add_totp(label)
|
entry_id = self.main.entries.add_totp(label)
|
||||||
elif kind == EntryType.SSH.value:
|
elif kind == EntryType.SSH.value:
|
||||||
self.main.entries.add_ssh_key(label)
|
entry_id = self.main.entries.add_ssh_key(label)
|
||||||
elif kind == EntryType.SEED.value:
|
elif kind == EntryType.SEED.value:
|
||||||
self.main.entries.add_seed(label)
|
entry_id = self.main.entries.add_seed(label)
|
||||||
elif kind == EntryType.PGP.value:
|
elif kind == EntryType.PGP.value:
|
||||||
self.main.entries.add_pgp_key(label)
|
entry_id = self.main.entries.add_pgp_key(label)
|
||||||
elif kind == EntryType.NOSTR.value:
|
elif kind == EntryType.NOSTR.value:
|
||||||
self.main.entries.add_nostr_key(label)
|
entry_id = self.main.entries.add_nostr_key(label)
|
||||||
elif kind == EntryType.KEY_VALUE.value:
|
elif kind == EntryType.KEY_VALUE.value:
|
||||||
self.main.entries.add_key_value(label, value or "")
|
entry_id = self.main.entries.add_key_value(label, value or "")
|
||||||
elif kind == EntryType.MANAGED_ACCOUNT.value:
|
elif kind == EntryType.MANAGED_ACCOUNT.value:
|
||||||
self.main.entries.add_managed_account(label)
|
entry_id = self.main.entries.add_managed_account(label)
|
||||||
else:
|
else:
|
||||||
|
entry_id = self.entry_id
|
||||||
kwargs = {"label": label}
|
kwargs = {"label": label}
|
||||||
if kind == EntryType.PASSWORD.value:
|
if kind == EntryType.PASSWORD.value:
|
||||||
kwargs.update({"username": username, "url": url})
|
kwargs.update({"username": username, "url": url})
|
||||||
elif kind == EntryType.KEY_VALUE.value:
|
elif kind == EntryType.KEY_VALUE.value:
|
||||||
kwargs.update({"value": value})
|
kwargs.update({"value": value})
|
||||||
self.main.entries.modify_entry(self.entry_id, **kwargs)
|
self.main.entries.modify_entry(entry_id, **kwargs)
|
||||||
self.main.refresh_entries()
|
|
||||||
|
entry = self.main.entries.retrieve_entry(entry_id) or {}
|
||||||
|
kind = entry.get("kind", entry.get("type", kind))
|
||||||
|
info1 = ""
|
||||||
|
info2 = ""
|
||||||
|
if kind == EntryType.PASSWORD.value:
|
||||||
|
info1 = username or ""
|
||||||
|
info2 = url or ""
|
||||||
|
elif kind == EntryType.KEY_VALUE.value:
|
||||||
|
info1 = entry.get("value", value or "")
|
||||||
|
else:
|
||||||
|
info1 = str(entry.get("index", ""))
|
||||||
|
|
||||||
|
row = {
|
||||||
|
"id": entry_id,
|
||||||
|
"label": label,
|
||||||
|
"kind": kind,
|
||||||
|
"info1": info1,
|
||||||
|
"info2": info2,
|
||||||
|
}
|
||||||
|
|
||||||
|
if self.entry_id is None:
|
||||||
|
self.main.entry_source.append(row)
|
||||||
|
else:
|
||||||
|
for existing in self.main.entry_source:
|
||||||
|
if getattr(existing, "id", None) == entry_id:
|
||||||
|
for key, value in row.items():
|
||||||
|
setattr(existing, key, value)
|
||||||
|
break
|
||||||
|
|
||||||
self.close()
|
self.close()
|
||||||
|
|
||||||
|
|
||||||
|
@@ -1,5 +1,6 @@
|
|||||||
import os
|
import os
|
||||||
from types import SimpleNamespace
|
from types import SimpleNamespace
|
||||||
|
from toga.sources import ListSource
|
||||||
|
|
||||||
import toga
|
import toga
|
||||||
import pytest
|
import pytest
|
||||||
@@ -112,7 +113,9 @@ def test_unlock_creates_main_window():
|
|||||||
def test_entrydialog_add_calls_service(kind, expect):
|
def test_entrydialog_add_calls_service(kind, expect):
|
||||||
toga.App("Test2", "org.example2")
|
toga.App("Test2", "org.example2")
|
||||||
entries = FakeEntries()
|
entries = FakeEntries()
|
||||||
main = SimpleNamespace(entries=entries, refresh_entries=lambda: None)
|
entries.retrieve_entry = lambda _id: {"kind": kind}
|
||||||
|
source = ListSource(["id", "label", "kind", "info1", "info2"])
|
||||||
|
main = SimpleNamespace(entries=entries, entry_source=source)
|
||||||
|
|
||||||
dlg = EntryDialog(main, None)
|
dlg = EntryDialog(main, None)
|
||||||
dlg.label_input.value = "L"
|
dlg.label_input.value = "L"
|
||||||
@@ -124,6 +127,10 @@ def test_entrydialog_add_calls_service(kind, expect):
|
|||||||
dlg.save(None)
|
dlg.save(None)
|
||||||
|
|
||||||
assert entries.added[-1] == expect
|
assert entries.added[-1] == expect
|
||||||
|
assert len(main.entry_source) == 1
|
||||||
|
row = main.entry_source[0]
|
||||||
|
assert row.label == "L"
|
||||||
|
assert row.kind == kind
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.parametrize(
|
@pytest.mark.parametrize(
|
||||||
@@ -142,8 +149,9 @@ def test_entrydialog_edit_calls_service(kind, expected):
|
|||||||
return {"kind": kind}
|
return {"kind": kind}
|
||||||
|
|
||||||
entries.retrieve_entry = retrieve
|
entries.retrieve_entry = retrieve
|
||||||
|
source = ListSource(["id", "label", "kind", "info1", "info2"])
|
||||||
main = SimpleNamespace(entries=entries, refresh_entries=lambda: None)
|
source.append({"id": 1, "label": "Old", "kind": kind, "info1": "", "info2": ""})
|
||||||
|
main = SimpleNamespace(entries=entries, entry_source=source)
|
||||||
dlg = EntryDialog(main, 1)
|
dlg = EntryDialog(main, 1)
|
||||||
dlg.label_input.value = "New"
|
dlg.label_input.value = "New"
|
||||||
dlg.kind_input.value = kind
|
dlg.kind_input.value = kind
|
||||||
@@ -153,3 +161,4 @@ def test_entrydialog_edit_calls_service(kind, expected):
|
|||||||
dlg.save(None)
|
dlg.save(None)
|
||||||
|
|
||||||
assert entries.modified[-1] == expected
|
assert entries.modified[-1] == expected
|
||||||
|
assert source[0].label == "New"
|
||||||
|
Reference in New Issue
Block a user