Skip to content

Commit 5c8691d

Browse files
committed
crud operations
1 parent 1243701 commit 5c8691d

File tree

5 files changed

+261
-146
lines changed

5 files changed

+261
-146
lines changed

services/web/server/src/simcore_service_webserver/groups/_groups_db.py

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
pass_or_acquire_connection,
1818
transaction_context,
1919
)
20-
from sqlalchemy import and_, literal_column
20+
from sqlalchemy import and_
2121
from sqlalchemy.dialects.postgresql import insert
2222
from sqlalchemy.engine.row import Row
2323
from sqlalchemy.ext.asyncio import AsyncConnection
@@ -96,7 +96,7 @@ async def _get_group_and_access_rights_or_raise(
9696
) -> Row:
9797
result = await conn.stream(
9898
sa.select(
99-
groups,
99+
*_GROUP_COLUMNS,
100100
user_to_groups.c.access_rights,
101101
)
102102
.select_from(user_to_groups.join(groups, user_to_groups.c.gid == groups.c.gid))
@@ -302,22 +302,24 @@ async def update_user_group(
302302
k: v for k, v in convert_groups_schema_to_db(new_group_values).items() if v
303303
}
304304

305-
group = await _get_group_and_access_rights_or_raise(
305+
row = await _get_group_and_access_rights_or_raise(
306306
conn, user_id=user_id, gid=gid
307307
)
308-
_check_group_permissions(group, user_id, gid, "write")
308+
assert row.gid == gid # nosec
309+
_check_group_permissions(row, user_id, gid, "write")
310+
access_rights = AccessRightsDict(**row.access_rights)
309311

310312
result = await conn.stream(
311313
# pylint: disable=no-value-for-parameter
312314
groups.update()
313315
.values(**new_values)
314-
.where(groups.c.gid == group.gid)
315-
.returning(literal_column("*"))
316+
.where(groups.c.gid == row.gid)
317+
.returning(*_GROUP_COLUMNS)
316318
)
317319
row = await result.fetchone()
318320
assert row # nosec
319321

320-
group, access_rights = _to_group_info_tuple(row)
322+
group = _row_to_model(row)
321323
return group, access_rights
322324

323325

services/web/server/src/simcore_service_webserver/groups/_groups_handlers.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -128,13 +128,12 @@ async def update_group(request: web.Request):
128128
req_ctx = GroupsRequestContext.model_validate(request)
129129
path_params = parse_request_path_parameters_as(GroupsPathParams, request)
130130
update: GroupUpdate = await parse_request_body_as(GroupUpdate, request)
131-
new_group_values = update.model_dump(exclude_unset=True)
132131

133132
group, access_rights = await _groups_api.update_organization(
134133
request.app,
135134
user_id=req_ctx.user_id,
136135
group_id=path_params.gid,
137-
new_group_values=new_group_values,
136+
new_group_values=update.model_dump(exclude_unset=True),
138137
)
139138

140139
updated_group = GroupGet.from_model(group, access_rights)
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
# pylint: disable=redefined-outer-name
2+
# pylint: disable=too-many-arguments
3+
# pylint: disable=too-many-statements
4+
# pylint: disable=unused-argument
5+
# pylint: disable=unused-variable
6+
7+
8+
from collections.abc import Callable
9+
10+
import pytest
11+
import sqlalchemy as sa
12+
from aiohttp.test_utils import TestClient
13+
from pytest_simcore.helpers.typing_env import EnvVarsDict
14+
from servicelib.aiohttp.application import create_safe_application
15+
from simcore_service_webserver.application_settings import setup_settings
16+
from simcore_service_webserver.db.plugin import setup_db
17+
from simcore_service_webserver.groups.plugin import setup_groups
18+
from simcore_service_webserver.login.plugin import setup_login
19+
from simcore_service_webserver.rest.plugin import setup_rest
20+
from simcore_service_webserver.security.plugin import setup_security
21+
from simcore_service_webserver.session.plugin import setup_session
22+
from simcore_service_webserver.users.plugin import setup_users
23+
24+
25+
@pytest.fixture
26+
def client(
27+
event_loop,
28+
aiohttp_client: Callable,
29+
app_environment: EnvVarsDict,
30+
postgres_db: sa.engine.Engine,
31+
) -> TestClient:
32+
app = create_safe_application()
33+
34+
setup_settings(app)
35+
setup_db(app)
36+
setup_session(app)
37+
setup_security(app)
38+
setup_rest(app)
39+
setup_login(app)
40+
setup_users(app)
41+
setup_groups(app)
42+
43+
return event_loop.run_until_complete(aiohttp_client(app))

services/web/server/tests/unit/with_dbs/01/groups/test_groups_2.py

Lines changed: 0 additions & 137 deletions
This file was deleted.

0 commit comments

Comments
 (0)