test: cleanup
This commit is contained in:
parent
082ab463c1
commit
227d8107aa
4 changed files with 48 additions and 31 deletions
|
|
@ -7,13 +7,9 @@ from injectable import injectable, autowired, Autowired
|
|||
from app.services import Passwords
|
||||
|
||||
|
||||
class ComplexValueTemplate(Template):
|
||||
# Pozwala na kropki w nazwach placeholderów, np. ${user.name.first}
|
||||
idpattern = r'[_a-zA-Z][_a-zA-Z0-9.]*'
|
||||
|
||||
|
||||
class SimpleValueTemplate(ComplexValueTemplate):
|
||||
delimiter = '%'
|
||||
class ValueTemplate(Template):
|
||||
# Pozwala na kropki i ukośniki w nazwach placeholderów, np. ${user.name/first}
|
||||
idpattern = r'[_a-zA-Z][_a-zA-Z0-9.\/]*'
|
||||
|
||||
|
||||
@injectable
|
||||
|
|
@ -26,12 +22,9 @@ class Mo:
|
|||
raw = ''
|
||||
with open(mo_file, "r") as mo:
|
||||
raw = mo.read()
|
||||
cmp = ComplexValueTemplate(raw)
|
||||
rendered = cmp.substitute(self._passwords.get_values(cmp.get_identifiers()))
|
||||
smp = SimpleValueTemplate(rendered)
|
||||
ids = [_id + '.password' for _id in smp.get_identifiers()]
|
||||
mappings = {k.replace('.password', ''): v for k, v in self._passwords.get_values(ids).items()}
|
||||
rendered = smp.substitute(mappings)
|
||||
parsed = ValueTemplate(raw)
|
||||
mappings = self._passwords.get_values(parsed.get_identifiers())
|
||||
rendered = parsed.safe_substitute(mappings)
|
||||
de_mo_ified = str(mo_file).replace(".mo", "")
|
||||
with open(de_mo_ified, "w") as mo:
|
||||
mo.write(rendered)
|
||||
|
|
|
|||
|
|
@ -6,6 +6,30 @@ import keyring
|
|||
from injectable import injectable
|
||||
from pykeepass import PyKeePass, create_database
|
||||
|
||||
class KeyRequest:
|
||||
def __init__(self, prompt: str):
|
||||
self.field_name = None
|
||||
self.entry_name = None
|
||||
self.path = None
|
||||
self._parse_prompt(prompt)
|
||||
|
||||
def _parse_prompt(self, prompt: str):
|
||||
|
||||
pass
|
||||
# k_parts = k.split("/")
|
||||
# field_name = None
|
||||
# match len(k_parts):
|
||||
# case 1:
|
||||
# field_name = 'password'
|
||||
# case 2:
|
||||
# field_name = k_parts[1]
|
||||
# k = k_parts[0]
|
||||
# case _:
|
||||
# output[k] = None
|
||||
# continue
|
||||
# key_parts = k.split(".")
|
||||
# path = key_parts[:-1] if len(key_parts) > 2 else None
|
||||
# entry_name = key_parts[-1]
|
||||
|
||||
@injectable(singleton=True)
|
||||
class Passwords:
|
||||
|
|
@ -28,13 +52,10 @@ class Passwords:
|
|||
def get_values(self, keys: list[str]) -> dict[str, str]:
|
||||
output = {}
|
||||
for k in keys:
|
||||
key_parts = k.split(".")
|
||||
path = key_parts[:-1] if len(key_parts) > 2 else None
|
||||
entry_name = key_parts[-2]
|
||||
field_name = key_parts[-1]
|
||||
request = KeyRequest(k)
|
||||
with self.open() as kp:
|
||||
kp_entry = kp.find_entries(path=path, first=True, title=entry_name)
|
||||
output[k] = self._get_field_value(kp_entry, field_name)
|
||||
kp_entry = kp.find_entries(path=request.path, first=True, title=request.entry_name)
|
||||
output[k] = self._get_field_value(kp_entry, request.field_name)
|
||||
return output
|
||||
|
||||
@staticmethod
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue