Skip to content

Commit ef234dc

Browse files
authored
fixes for i3 worker (#567)
1 parent 6925d10 commit ef234dc

File tree

3 files changed

+45
-1
lines changed

3 files changed

+45
-1
lines changed

papermerge/core/features/nodes/db/api.py

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,37 @@ def str2colexpr(keys: list[str]):
4444
return result
4545

4646

47+
def get_nodes(
48+
db_session: Session, user_id: UUID, node_ids: list[UUID] | None = None
49+
) -> list[schema.Document | schema.Folder]:
50+
items = []
51+
if node_ids is None:
52+
node_ids = []
53+
54+
if len(node_ids) > 0:
55+
stmt = (
56+
select(orm.Node)
57+
.options(selectinload(orm.Node.tags))
58+
.filter(orm.Node.id.in_(node_ids), orm.Node.user_id == user_id)
59+
)
60+
else:
61+
stmt = (
62+
select(orm.Node)
63+
.options(selectinload(orm.Node.tags))
64+
.filter(orm.Node.user_id == user_id)
65+
)
66+
67+
nodes = db_session.scalars(stmt).all()
68+
69+
for node in nodes:
70+
if node.ctype == "folder":
71+
items.append(schema.Folder.model_validate(node))
72+
else:
73+
items.append(schema.Document.model_validate(node))
74+
75+
return items
76+
77+
4778
def get_folder_by_id(db_session: Session, id: uuid.UUID) -> schema.Folder:
4879
stmt = select(Folder).where(Folder.id == id)
4980
db_folder = db_session.scalars(stmt).one_or_none()

papermerge/core/features/nodes/router.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -306,7 +306,8 @@ def get_nodes_details(
306306
if len(node_ids) == 0:
307307
return []
308308

309-
nodes = db.get_nodes(db_session, node_ids)
309+
with Session() as db_session:
310+
nodes = nodes_dbapi.get_nodes(db_session, node_ids=node_ids, user_id=user.id)
310311

311312
return nodes
312313

papermerge/core/features/nodes/tests/test_nodes_router.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,18 @@
1010
from papermerge.core.tests.types import AuthTestClient
1111

1212

13+
def test_get_node_details(auth_api_client: AuthTestClient, make_document, db_session):
14+
# Arrange
15+
user = auth_api_client.user
16+
doc = make_document(title="letter.pdf", user=user, parent=user.home_folder)
17+
18+
# Act
19+
response = auth_api_client.get(f"/nodes/?node_ids={doc.id}")
20+
21+
# Assert
22+
assert response.status_code == 200
23+
24+
1325
def test_nodes_move_basic(
1426
auth_api_client: AuthTestClient, make_folder, make_document, db_session
1527
):

0 commit comments

Comments
 (0)