Skip to content

Commit 84e140a

Browse files
Fix code formatting for pre-commit compliance
1 parent e2efd27 commit 84e140a

File tree

2 files changed

+37
-35
lines changed

2 files changed

+37
-35
lines changed

src/dstack/_internal/server/services/projects.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ async def list_user_projects(
6161
projects = await list_project_models(session=session)
6262
else:
6363
projects = await list_user_project_models(session=session, user=user)
64-
64+
6565
projects = sorted(projects, key=lambda p: p.created_at)
6666
return [
6767
project_model_to_project(p, include_backends=False, include_members=False)
@@ -84,7 +84,7 @@ async def list_user_accessible_projects(
8484
member_projects = await list_user_project_models(session=session, user=user)
8585
public_projects = await _list_public_non_member_project_models(session=session, user=user)
8686
projects = member_projects + public_projects
87-
87+
8888
projects = sorted(projects, key=lambda p: p.created_at)
8989
return [
9090
project_model_to_project(p, include_backends=False, include_members=False)

src/tests/_internal/server/routers/test_projects.py

Lines changed: 35 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -91,15 +91,15 @@ async def test_returns_public_projects_to_non_members(
9191
created_at=datetime(2023, 1, 2, 3, 4, tzinfo=timezone.utc),
9292
global_role=GlobalRole.USER,
9393
)
94-
94+
9595
# Create a different user who is not a member
9696
non_member = await create_user(
9797
session=session,
9898
name="non_member",
9999
created_at=datetime(2023, 1, 2, 3, 4, tzinfo=timezone.utc),
100100
global_role=GlobalRole.USER,
101101
)
102-
102+
103103
# Create a public project
104104
public_project = await create_project(
105105
session=session,
@@ -108,26 +108,28 @@ async def test_returns_public_projects_to_non_members(
108108
created_at=datetime(2023, 1, 2, 3, 4, tzinfo=timezone.utc),
109109
is_public=True,
110110
)
111-
112-
# Create a private project
111+
112+
# Create a private project
113113
private_project = await create_project(
114114
session=session,
115115
owner=owner,
116-
name="private_project",
116+
name="private_project",
117117
created_at=datetime(2023, 1, 2, 3, 5, tzinfo=timezone.utc),
118118
is_public=False,
119119
)
120-
120+
121121
# Add owner as admin to both projects
122122
await add_project_member(
123123
session=session, project=public_project, user=owner, project_role=ProjectRole.ADMIN
124124
)
125125
await add_project_member(
126126
session=session, project=private_project, user=owner, project_role=ProjectRole.ADMIN
127127
)
128-
128+
129129
# List projects as non-member - should only see public project
130-
response = await client.post("/api/projects/list", headers=get_auth_headers(non_member.token))
130+
response = await client.post(
131+
"/api/projects/list", headers=get_auth_headers(non_member.token)
132+
)
131133
assert response.status_code == 200
132134
projects = response.json()
133135

@@ -148,15 +150,15 @@ async def test_member_sees_both_public_and_private_projects(
148150
created_at=datetime(2023, 1, 2, 3, 4, tzinfo=timezone.utc),
149151
global_role=GlobalRole.USER,
150152
)
151-
153+
152154
# Create a user who will be a member
153155
member = await create_user(
154156
session=session,
155157
name="member",
156158
created_at=datetime(2023, 1, 2, 3, 4, tzinfo=timezone.utc),
157159
global_role=GlobalRole.USER,
158160
)
159-
161+
160162
# Create a public project
161163
public_project = await create_project(
162164
session=session,
@@ -165,34 +167,34 @@ async def test_member_sees_both_public_and_private_projects(
165167
created_at=datetime(2023, 1, 2, 3, 4, tzinfo=timezone.utc),
166168
is_public=True,
167169
)
168-
170+
169171
# Create a private project
170172
private_project = await create_project(
171173
session=session,
172174
owner=owner,
173175
name="private_project",
174-
created_at=datetime(2023, 1, 2, 3, 5, tzinfo=timezone.utc),
176+
created_at=datetime(2023, 1, 2, 3, 5, tzinfo=timezone.utc),
175177
is_public=False,
176178
)
177-
179+
178180
# Add member to the private project only
179181
await add_project_member(
180182
session=session, project=private_project, user=member, project_role=ProjectRole.USER
181183
)
182-
184+
183185
# Add owner as admin to both projects
184186
await add_project_member(
185187
session=session, project=public_project, user=owner, project_role=ProjectRole.ADMIN
186188
)
187189
await add_project_member(
188190
session=session, project=private_project, user=owner, project_role=ProjectRole.ADMIN
189191
)
190-
192+
191193
# List projects as member - should see both projects
192194
response = await client.post("/api/projects/list", headers=get_auth_headers(member.token))
193195
assert response.status_code == 200
194196
projects = response.json()
195-
197+
196198
# Should see both projects, sorted by created_at
197199
assert len(projects) == 2
198200
project_names = [p["project_name"] for p in projects]
@@ -366,16 +368,14 @@ async def test_creates_public_project(
366368
json=body,
367369
)
368370
assert response.status_code == 200, response.json()
369-
371+
370372
# Check that the response includes is_public=True
371373
response_data = response.json()
372374
assert "is_public" in response_data
373375
assert response_data["is_public"] is True
374-
376+
375377
# Verify the project was created as public in the database
376-
res = await session.execute(
377-
select(ProjectModel).where(ProjectModel.name == project_name)
378-
)
378+
res = await session.execute(select(ProjectModel).where(ProjectModel.name == project_name))
379379
project = res.scalar_one()
380380
assert project.is_public is True
381381

@@ -876,7 +876,7 @@ async def test_non_manager_cannot_set_project_members(
876876

877877
class TestListUserProjectsService:
878878
"""Test the service-level functions for backward compatibility"""
879-
879+
880880
@pytest.mark.asyncio
881881
@pytest.mark.parametrize("test_db", ["sqlite", "postgres"], indirect=True)
882882
async def test_list_user_projects_only_returns_member_projects(
@@ -889,15 +889,15 @@ async def test_list_user_projects_only_returns_member_projects(
889889
created_at=datetime(2023, 1, 2, 3, 4, tzinfo=timezone.utc),
890890
global_role=GlobalRole.USER,
891891
)
892-
892+
893893
# Create a different user who is not a member
894894
non_member = await create_user(
895895
session=session,
896896
name="non_member",
897897
created_at=datetime(2023, 1, 2, 3, 4, tzinfo=timezone.utc),
898898
global_role=GlobalRole.USER,
899899
)
900-
900+
901901
# Create a public project
902902
public_project = await create_project(
903903
session=session,
@@ -906,17 +906,18 @@ async def test_list_user_projects_only_returns_member_projects(
906906
created_at=datetime(2023, 1, 2, 3, 4, tzinfo=timezone.utc),
907907
is_public=True,
908908
)
909-
909+
910910
# Add owner as admin
911911
await add_project_member(
912912
session=session, project=public_project, user=owner, project_role=ProjectRole.ADMIN
913913
)
914-
914+
915915
# Test: list_user_projects should NOT return public projects for non-members
916916
from dstack._internal.server.services.projects import list_user_projects
917+
917918
projects = await list_user_projects(session=session, user=non_member)
918919
assert len(projects) == 0 # Non-member should see NO projects
919-
920+
920921
# Test: list_user_projects should return projects where user IS a member
921922
projects = await list_user_projects(session=session, user=owner)
922923
assert len(projects) == 1
@@ -934,15 +935,15 @@ async def test_list_user_accessible_projects_returns_member_and_public_projects(
934935
created_at=datetime(2023, 1, 2, 3, 4, tzinfo=timezone.utc),
935936
global_role=GlobalRole.USER,
936937
)
937-
938+
938939
# Create a different user who is not a member
939940
non_member = await create_user(
940941
session=session,
941942
name="non_member",
942943
created_at=datetime(2023, 1, 2, 3, 4, tzinfo=timezone.utc),
943944
global_role=GlobalRole.USER,
944945
)
945-
946+
946947
# Create a public project
947948
public_project = await create_project(
948949
session=session,
@@ -951,7 +952,7 @@ async def test_list_user_accessible_projects_returns_member_and_public_projects(
951952
created_at=datetime(2023, 1, 2, 3, 4, tzinfo=timezone.utc),
952953
is_public=True,
953954
)
954-
955+
955956
# Create a private project
956957
private_project = await create_project(
957958
session=session,
@@ -960,21 +961,22 @@ async def test_list_user_accessible_projects_returns_member_and_public_projects(
960961
created_at=datetime(2023, 1, 2, 3, 5, tzinfo=timezone.utc),
961962
is_public=False,
962963
)
963-
964+
964965
# Add owner as admin to both projects
965966
await add_project_member(
966967
session=session, project=public_project, user=owner, project_role=ProjectRole.ADMIN
967968
)
968969
await add_project_member(
969970
session=session, project=private_project, user=owner, project_role=ProjectRole.ADMIN
970971
)
971-
972+
972973
# Test: list_user_accessible_projects should return public projects for non-members
973974
from dstack._internal.server.services.projects import list_user_accessible_projects
975+
974976
projects = await list_user_accessible_projects(session=session, user=non_member)
975977
assert len(projects) == 1 # Should see only the public project
976978
assert projects[0].project_name == "public_project"
977-
979+
978980
# Test: list_user_accessible_projects should return ALL projects for members
979981
projects = await list_user_accessible_projects(session=session, user=owner)
980982
assert len(projects) == 2 # Should see both projects

0 commit comments

Comments
 (0)