Skip to content

Commit

Permalink
Merge pull request #1746 from fractal-analytics-platform/1734-prepare…
Browse files Browse the repository at this point in the history
…-update-db-data-script-for-user-groups

Add user groups validation to `validate_db_data_with_read_schemas.py`
  • Loading branch information
ychiucco committed Sep 10, 2024
2 parents 88f5358 + f076e76 commit bf8aed0
Show file tree
Hide file tree
Showing 2 changed files with 46 additions and 0 deletions.
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@
* Internal
* Refactored `fractal_server.app.auth` and `fractal_server.app.security` (\#1738)/
* Export all relevant modules in `app.models`, since it matters e.g. for `autogenerate`-ing migration scripts (\#1738).
* Testing
* Add `UserGroup` validation to `scripts/validate_db_data_with_read_schemas.py` (\#1746).


# 2.3.11
Expand Down
44 changes: 44 additions & 0 deletions scripts/validate_db_data_with_read_schemas.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
from sqlalchemy import select

from fractal_server.app.db import get_sync_db
from fractal_server.app.models.linkusergroup import LinkUserGroup
from fractal_server.app.models.security import UserGroup
from fractal_server.app.models.security import UserOAuth
from fractal_server.app.models.v1 import ApplyWorkflow
from fractal_server.app.models.v1 import Dataset
Expand All @@ -16,6 +18,7 @@
from fractal_server.app.models.v2 import TaskV2
from fractal_server.app.models.v2 import WorkflowV2
from fractal_server.app.schemas.user import UserRead
from fractal_server.app.schemas.user_group import UserGroupRead
from fractal_server.app.schemas.v1 import ApplyWorkflowReadV1
from fractal_server.app.schemas.v1 import DatasetReadV1
from fractal_server.app.schemas.v1 import ProjectReadV1
Expand All @@ -32,6 +35,7 @@
from fractal_server.app.schemas.v2 import TaskReadV2
from fractal_server.app.schemas.v2 import WorkflowReadV2
from fractal_server.app.schemas.v2 import WorkflowTaskReadV2
from fractal_server.app.security import FRACTAL_DEFAULT_GROUP_NAME

with next(get_sync_db()) as db:

Expand All @@ -42,6 +46,46 @@
UserRead(**user.model_dump())
print(f"User {user.id} validated")

# USER GROUPS
stm = select(UserGroup)
groups = db.execute(stm).scalars().unique().all()
for group in sorted(groups, key=lambda x: x.id):
UserGroupRead(**group.model_dump())
print(f"UserGroup {group.id} validated")

# DEFAULT GROUP
default_group = next(
(
group
for group in groups
if group.name == FRACTAL_DEFAULT_GROUP_NAME
),
None,
)
if default_group is None:
raise ValueError(
f"Default group '{FRACTAL_DEFAULT_GROUP_NAME}' does not exist."
)

stm = (
select(UserOAuth.id)
.join(LinkUserGroup)
.where(LinkUserGroup.user_id == UserOAuth.id)
.where(LinkUserGroup.group_id == default_group.id)
)
user_ids_in_default_group = set(db.execute(stm).scalars().unique().all())
all_user_ids = set(user.id for user in users)
if user_ids_in_default_group == all_user_ids:
print(f"All users are in default group '{FRACTAL_DEFAULT_GROUP_NAME}'")
else:
user_ids_not_in_default_group = (
all_user_ids - user_ids_in_default_group
)
raise ValueError(
"The following users are not in defualt group:\n"
f"{user_ids_not_in_default_group}"
)

# V1

# PROJECTS V1
Expand Down

0 comments on commit bf8aed0

Please sign in to comment.