Keepass outline

This commit is contained in:
Piotr Dec 2025-10-08 00:05:13 +02:00
parent b18488a6d3
commit 162c0adf13
Signed by: stawros
GPG key ID: 74B18A3F0F1E99C0
9 changed files with 115 additions and 3 deletions

49
app/model/passwords.py Normal file
View file

@ -0,0 +1,49 @@
from dataclasses import dataclass, field
from typing import Type
# TODO: unnecessary?
@dataclass
class PathItem:
name: str
t: Type
@dataclass
class Path:
path: list[PathItem] = field(default_factory=list)
def append(self, name, t):
self.path.append(PathItem(name, t))
def __str__(self):
return "/".join([i.name for i in self.path])
@dataclass
class Group:
name: str
passwords: list["Password"] = field(default_factory=list)
parent: "Group|None" = None
@property
def path(self):
if self.parent is None:
new_path = Path()
new_path.append(self.name, type(self))
return new_path
return self.parent.path.append(self.name, type(self))
@dataclass
class Password:
name: str
group: Group
@property
def path(self):
return self.group.path.append(self.name, type(self))
class UnencryptedPassword(Password):
def __init__(self, name: str, value: str, group: Group):
super().__init__(name, group)
self.value = value