Skip to content

Commit 9450b1d

Browse files
authored
Merge branch 'master' into is1988/upgrading-director-to-fastapi
2 parents d0e7a06 + 0781e63 commit 9450b1d

File tree

157 files changed

+3475
-1846
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

157 files changed

+3475
-1846
lines changed

api/specs/web-server/_folders.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,28 @@ async def list_folders(
6363
...
6464

6565

66+
@router.get(
67+
"/folders:search",
68+
response_model=Envelope[list[FolderGet]],
69+
)
70+
async def list_folders_full_search(
71+
params: Annotated[PageQueryParameters, Depends()],
72+
text: str | None = None,
73+
order_by: Annotated[
74+
Json,
75+
Query(
76+
description="Order by field (modified_at|name|description) and direction (asc|desc). The default sorting order is ascending.",
77+
example='{"field": "name", "direction": "desc"}',
78+
),
79+
] = '{"field": "modified_at", "direction": "desc"}',
80+
filters: Annotated[
81+
Json | None,
82+
Query(description=FolderFilters.schema_json(indent=1)),
83+
] = None,
84+
):
85+
...
86+
87+
6688
@router.get(
6789
"/folders/{folder_id}",
6890
response_model=Envelope[FolderGet],

packages/aws-library/requirements/_base.txt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,6 @@ arrow==1.3.0
4444
# -r requirements/../../../packages/service-library/requirements/../../../packages/models-library/requirements/_base.in
4545
# -r requirements/../../../packages/service-library/requirements/_base.in
4646
# -r requirements/_base.in
47-
async-timeout==4.0.3
48-
# via redis
4947
attrs==24.2.0
5048
# via
5149
# aiohttp

packages/models-library/src/models_library/folders.py

Lines changed: 39 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,42 @@
11
from datetime import datetime
2+
from enum import auto
23
from typing import TypeAlias
34

4-
from models_library.users import GroupID, UserID
5-
from models_library.workspaces import WorkspaceID
6-
from pydantic import BaseModel, Field, PositiveInt
5+
from pydantic import BaseModel, Field, PositiveInt, validator
6+
7+
from .access_rights import AccessRights
8+
from .users import GroupID, UserID
9+
from .utils.enums import StrAutoEnum
10+
from .workspaces import WorkspaceID
711

812
FolderID: TypeAlias = PositiveInt
913

1014

15+
class FolderScope(StrAutoEnum):
16+
ROOT = auto()
17+
SPECIFIC = auto()
18+
ALL = auto()
19+
20+
21+
class FolderQuery(BaseModel):
22+
folder_scope: FolderScope
23+
folder_id: PositiveInt | None = None
24+
25+
@validator("folder_id", pre=True, always=True)
26+
@classmethod
27+
def validate_folder_id(cls, value, values):
28+
scope = values.get("folder_scope")
29+
if scope == FolderScope.SPECIFIC and value is None:
30+
raise ValueError(
31+
"folder_id must be provided when folder_scope is SPECIFIC."
32+
)
33+
if scope != FolderScope.SPECIFIC and value is not None:
34+
raise ValueError(
35+
"folder_id should be None when folder_scope is not SPECIFIC."
36+
)
37+
return value
38+
39+
1140
#
1241
# DB
1342
#
@@ -38,3 +67,10 @@ class FolderDB(BaseModel):
3867

3968
class Config:
4069
orm_mode = True
70+
71+
72+
class UserFolderAccessRightsDB(FolderDB):
73+
my_access_rights: AccessRights
74+
75+
class Config:
76+
orm_mode = True

packages/models-library/src/models_library/workspaces.py

Lines changed: 31 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,41 @@
11
from datetime import datetime
2+
from enum import auto
23
from typing import TypeAlias
34

4-
from models_library.access_rights import AccessRights
5-
from models_library.users import GroupID
6-
from pydantic import BaseModel, Field, PositiveInt
5+
from pydantic import BaseModel, Field, PositiveInt, validator
6+
7+
from .access_rights import AccessRights
8+
from .users import GroupID
9+
from .utils.enums import StrAutoEnum
710

811
WorkspaceID: TypeAlias = PositiveInt
912

1013

14+
class WorkspaceScope(StrAutoEnum):
15+
PRIVATE = auto()
16+
SHARED = auto()
17+
ALL = auto()
18+
19+
20+
class WorkspaceQuery(BaseModel):
21+
workspace_scope: WorkspaceScope
22+
workspace_id: PositiveInt | None = None
23+
24+
@validator("workspace_id", pre=True, always=True)
25+
@classmethod
26+
def validate_workspace_id(cls, value, values):
27+
scope = values.get("workspace_scope")
28+
if scope == WorkspaceScope.SHARED and value is None:
29+
raise ValueError(
30+
"workspace_id must be provided when workspace_scope is SHARED."
31+
)
32+
if scope != WorkspaceScope.SHARED and value is not None:
33+
raise ValueError(
34+
"workspace_id should be None when workspace_scope is not SHARED."
35+
)
36+
return value
37+
38+
1139
#
1240
# DB
1341
#

packages/notifications-library/requirements/_base.txt

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -60,16 +60,16 @@ mdurl==0.1.2
6060
# via markdown-it-py
6161
multidict==6.1.0
6262
# via yarl
63-
opentelemetry-api==1.28.0
63+
opentelemetry-api==1.28.1
6464
# via
6565
# opentelemetry-instrumentation
6666
# opentelemetry-instrumentation-asyncpg
6767
# opentelemetry-semantic-conventions
68-
opentelemetry-instrumentation==0.49b0
68+
opentelemetry-instrumentation==0.49b1
6969
# via opentelemetry-instrumentation-asyncpg
70-
opentelemetry-instrumentation-asyncpg==0.49b0
70+
opentelemetry-instrumentation-asyncpg==0.49b1
7171
# via -r requirements/../../../packages/postgres-database/requirements/_base.in
72-
opentelemetry-semantic-conventions==0.49b0
72+
opentelemetry-semantic-conventions==0.49b1
7373
# via
7474
# opentelemetry-instrumentation
7575
# opentelemetry-instrumentation-asyncpg
@@ -80,7 +80,7 @@ orjson==3.10.7
8080
# -c requirements/../../../packages/settings-library/requirements/../../../requirements/constraints.txt
8181
# -c requirements/../../../requirements/constraints.txt
8282
# -r requirements/../../../packages/models-library/requirements/_base.in
83-
packaging==24.1
83+
packaging==24.2
8484
# via opentelemetry-instrumentation
8585
psycopg2-binary==2.9.9
8686
# via sqlalchemy
@@ -136,5 +136,5 @@ wrapt==1.16.0
136136
# opentelemetry-instrumentation
137137
yarl==1.12.1
138138
# via -r requirements/../../../packages/postgres-database/requirements/_base.in
139-
zipp==3.20.2
139+
zipp==3.21.0
140140
# via importlib-metadata

packages/notifications-library/requirements/_test.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ mypy==1.12.0
5252
# via sqlalchemy
5353
mypy-extensions==1.0.0
5454
# via mypy
55-
packaging==24.1
55+
packaging==24.2
5656
# via
5757
# -c requirements/_base.txt
5858
# pytest

packages/notifications-library/requirements/_tools.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ mypy-extensions==1.0.0
3838
# mypy
3939
nodeenv==1.9.1
4040
# via pre-commit
41-
packaging==24.1
41+
packaging==24.2
4242
# via
4343
# -c requirements/_base.txt
4444
# -c requirements/_test.txt
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
"""add cancellation mark
2+
3+
Revision ID: 8bfe65a5e294
4+
Revises: 5ad02358751a
5+
Create Date: 2024-11-08 14:40:59.266181+00:00
6+
7+
"""
8+
import sqlalchemy as sa
9+
from alembic import op
10+
11+
# revision identifiers, used by Alembic.
12+
revision = "8bfe65a5e294"
13+
down_revision = "5ad02358751a"
14+
branch_labels = None
15+
depends_on = None
16+
17+
18+
def upgrade():
19+
# ### commands auto generated by Alembic - please adjust! ###
20+
op.add_column(
21+
"comp_runs", sa.Column("cancelled", sa.DateTime(timezone=True), nullable=True)
22+
)
23+
# ### end Alembic commands ###
24+
25+
26+
def downgrade():
27+
# ### commands auto generated by Alembic - please adjust! ###
28+
op.drop_column("comp_runs", "cancelled")
29+
# ### end Alembic commands ###

packages/postgres-database/src/simcore_postgres_database/models/comp_runs.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,12 @@
9999
nullable=True,
100100
doc="When the run was finished",
101101
),
102+
sa.Column(
103+
"cancelled",
104+
sa.DateTime(timezone=True),
105+
nullable=True,
106+
doc="If filled, when cancellation was requested",
107+
),
102108
sa.Column("metadata", JSONB, nullable=True, doc="the run optional metadata"),
103109
sa.Column(
104110
"use_on_demand_clusters",
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
def assemble_array_groups(user_group_ids: list[int]) -> str:
2+
return (
3+
"array[]::text[]"
4+
if len(user_group_ids) == 0
5+
else f"""array[{', '.join(f"'{group_id}'" for group_id in user_group_ids)}]"""
6+
)

0 commit comments

Comments
 (0)