1
1
"""Read and copy Keepass database entries using dmenu style launchers
2
2
3
3
"""
4
- from copy import deepcopy
4
+ from copy import copy
5
5
from dataclasses import dataclass
6
6
from datetime import datetime , timedelta
7
7
import errno
@@ -126,13 +126,13 @@ def get_database(open_databases=None, **kwargs):
126
126
# Prefer db, autotype, totp passed via cli
127
127
db_ = [i for i in open_databases .values () if i .dbase == clidb .dbase ]
128
128
if db_ :
129
- dbs = [deepcopy (db_ [0 ])]
129
+ dbs = [copy (db_ [0 ])]
130
130
if clidb .atype :
131
131
dbs [0 ].atype = clidb .atype
132
132
if clidb .totp :
133
133
dbs [0 ].totp = clidb .totp
134
134
else :
135
- dbs = [deepcopy (clidb )]
135
+ dbs = [copy (clidb )]
136
136
# Use existing keyfile if available
137
137
if not dbs [0 ].kfile and dbs [0 ].dbase in dbs_cfg_n :
138
138
dbs [0 ].kfile = dbs_cfg [dbs_cfg_n .index (dbs [0 ].dbase )].kfile
@@ -142,15 +142,15 @@ def get_database(open_databases=None, **kwargs):
142
142
elif (clidb .atype or clidb .totp ) and open_databases :
143
143
# If only autotype or totp is passed, use current db
144
144
db_ = [i for i in open_databases .values () if i .is_active is True ][0 ]
145
- dbs = [deepcopy (db_ )]
145
+ dbs = [copy (db_ )]
146
146
dbs [0 ].atype = clidb .atype
147
147
dbs [0 ].totp = clidb .totp
148
148
elif open_databases :
149
149
# if there are dbs already open, make a list of those + dbs from config.ini
150
- dbs = [deepcopy (i ) for i in open_databases .values ()]
150
+ dbs = [copy (i ) for i in open_databases .values ()]
151
151
for db_ in dbs_cfg :
152
152
if db_ .dbase not in open_databases :
153
- dbs .append (deepcopy (db_ ))
153
+ dbs .append (copy (db_ ))
154
154
else :
155
155
dbs = dbs_cfg
156
156
if len (dbs ) > 1 :
@@ -169,10 +169,12 @@ def get_database(open_databases=None, **kwargs):
169
169
dbs [0 ].pword = get_passphrase ()
170
170
if dbs [0 ].pword is None :
171
171
return None , open_databases
172
+ if dbs [0 ].kpo is None :
173
+ dbs [0 ].kpo = get_entries (dbs [0 ])
172
174
for db_ in open_databases .values ():
173
175
db_ .is_active = False
174
176
if dbs [0 ].dbase not in open_databases :
175
- open_databases [dbs [0 ].dbase ] = deepcopy (dbs [0 ])
177
+ open_databases [dbs [0 ].dbase ] = copy (dbs [0 ])
176
178
if dbs [0 ].dbase in dbs_cfg_n :
177
179
db_cfg_atype = dbs_cfg [dbs_cfg_n .index (dbs [0 ].dbase )].atype
178
180
open_databases [dbs [0 ].dbase ].atype = db_cfg_atype
@@ -297,8 +299,8 @@ def __init__(self, server, **kwargs):
297
299
keepmenu .reload_config (None if cfile is None else expanduser (cfile ))
298
300
self .server = server
299
301
self .database , self .open_databases = get_database (** kwargs )
300
- if self .database :
301
- self .database .kpo = get_entries (self .database )
302
+ # if self.database:
303
+ # self.database.kpo = get_entries(self.database)
302
304
if not self .database or not self .database .kpo :
303
305
self .server .kill_flag .set ()
304
306
sys .exit ()
@@ -493,12 +495,13 @@ def menu_open_another_database(self, **kwargs):
493
495
Args: kwargs - possibly 'database', 'keyfile', 'autotype', 'totp'
494
496
495
497
"""
496
- prev_db , prev_open = self .database , deepcopy (self .open_databases )
498
+ prev_db , prev_open = self .database , copy (self .open_databases )
497
499
self .database , self .open_databases = get_database (self .open_databases , ** kwargs )
498
500
if self .database is None :
499
501
self .database , self .open_databases = prev_db , prev_open
500
502
return
501
503
if not self .database .kpo :
504
+ print ("get_entries" )
502
505
self .database .kpo = get_entries (self .database )
503
506
if self .database .kpo is None :
504
507
self .database , self .open_databases = prev_db , prev_open
0 commit comments