From 95fc9225b0bfa4034a55d6cdf28ff9823bd7c66e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gregory=20Rome=CC=81?= Date: Thu, 13 Feb 2014 23:01:34 +0100 Subject: [PATCH] enables to lookup entry by username or title from keepass import kpdb db = kpdb.Database(filename,masterkey) db.get_entry(username).password --- python/keepass/kpdb.py | 8 ++++++++ tests/test_io.py | 18 ++++++++++++++++++ 2 files changed, 26 insertions(+) diff --git a/python/keepass/kpdb.py b/python/keepass/kpdb.py index db79f24..c03e3c4 100644 --- a/python/keepass/kpdb.py +++ b/python/keepass/kpdb.py @@ -357,6 +357,14 @@ def remove_group(self, path, level=None): if entry.groupid == group.groupid: self.entries.remove(entry) + def get_entry(self, value): + """ + Get entry by username or title. + """ + for entry in self.entries: + if entry.username == str(value) or entry.title == str(value): + return entry + return None pass diff --git a/tests/test_io.py b/tests/test_io.py index 7e4f9a7..f835a60 100644 --- a/tests/test_io.py +++ b/tests/test_io.py @@ -26,3 +26,21 @@ def test_write(): finally: shutil.rmtree(tempdir) + +def test_get_entry(): + """ + Try to get entries. + """ + db = keepass.kpdb.Database() + db.add_entry(path='Secrets/Terrible', title='Gonk', username='foo', password='bar', url='https://example.org/') + db.add_entry(path='Secrets/Terrible2', title='Gonk2', username='foo2', password='bar2', url='https://example.org/2') + db.add_entry(path='Secrets/Terrible3', title='Gonk3', username='foo3', password='bar3', url='https://example.org/3') + + entry = db.get_entry('Gonk4') + assert entry == None + + entry = db.get_entry('Gonk2') + assert entry.password == 'bar2' + + entry = db.get_entry('foo3') + assert entry.password == 'bar3' \ No newline at end of file